如何在android中将值从一个页面发送到另一个页面?

时间:2012-12-01 07:17:30

标签: android

我需要将值从screen1传递到screen4。我将值声明为静态,但这样的值不会传递。在screen1之后,我需要调用screen2和screen3。在screen1按钮单击我获取值但如何将它们发送到screen4。这方面的任何建议都会很感激。

7 个答案:

答案 0 :(得分:1)

您应该在您用于启动新活动的意图的EXTRAS中传递您的值。您可以使用众多putExtra functions in the Intent class.

中的一个

答案 1 :(得分:1)

您声明活动的静态变量。意思是在一个单独的类中。 并尝试访问它们。它会起作用。

答案 2 :(得分:1)

您可以像这样创建独立类:

public class Myclass{
    private String myString;
    public void setString(String str){
    myString=str;
    }
    public String getString(){
    return myString;
    }
}

并在您的Activity1中,您可以通过

为字符串赋值
String myString="What ever the string you have"
MyClass.setString(myString);

你可以在任何你想要的地方调用该字符串:

String myString=MyClass.getString():

答案 3 :(得分:1)

尽量避免使用静态,因为你可能在不知不觉中导致内存泄漏,如果你必须使用静态,那么请确保你没有保存你的活动的上下文(直接/间接)。

您还可以使用Parcelable,尤其是当数据复杂且庞大时。 为您的数据创建POJO并实现parcelable

public class Student implements Parcelable{
    private String id;
    private String name;
    private String grade;

    // Constructor
    public Student(String id, String name, String grade){
        this.id = id;
        this.name = name;
       this.grade = grade;
   }
   // Getter and setter methods
   .........

   // Parcelling part
   public Student(Parcel in){
       String[] data = new String[3];

       in.readStringArray(data);
       this.id = data[0];
       this.name = data[1];
       this.grade = data[2];
   }

   @override
   public int describeContents(){
       return 0;
   }

   @Override
   public void writeToParcel(Parcel dest, int flags) {
       dest.writeStringArray(new String[] {this.id,
                                           this.name,
                                           this.grade});
   }
   public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
       public Student createFromParcel(Parcel in) {
           return new Student(in); 
       }

       public Student[] newArray(int size) {
           return new Student[size];
       }
   };

}

一旦你使POJO成为可分割的,你就可以通过Intent传递这个类的对象。

intent.putExtra("student", new Student("2","Ryan","9"));

然后,您可以在目标活动中恢复此对象

Bundle data = getIntent().getExtras();
Student student = data.getParcelable("student");

答案 4 :(得分:0)

执行此操作的最简单方法是传递您用于启动活动的意图中的值:

Intent intent = new Intent(getBaseContext(), Your4NumberScreen.class);
intent.putExtra("new_variable_name", "valueToPass");
startActivity(intent)

然后在新的Activity中,检索这些值:

Bundle extras = getIntent().getExtras();
if (extras != null) {
    String value = extras.getString("new_variable_name");
}

编辑:如果您想直接将值传递到屏幕4,那么您可以使用,否则您必须传递到screen2然后从screen2传递到screen3,然后使用上面的代码从3传递到4。

答案 5 :(得分:0)

发件人方:

Intent myIntent = new Intent(screen1.this, screen4.class);
myIntent.putExtra("intVariableName", intValue);
startActivity(myIntent);

接收方[screen4]:

Intent mIntent = getIntent();
 int intValue = mIntent.getIntExtra("intVariableName", 0);

答案 6 :(得分:0)

你需要使用putextra。

String easyPuzzle  = "630208010200050089109060030"+
                     "008006050000187000060500900"+
                     "09007010681002000502003097";

Intent i = new Intent(this, ToClass.class);
i.putExtra("epuzzle", easyPuzzle);
startActivity(i); 

然后从您的新活动中提取它:

Intent intent = getIntent();
String easyPuzzle = intent.getExtras().getString("epuzzle");