1

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

4

7 回答 7

1

EXTRAS您应该在用于启动新活动的意图中传递您的值。您可以使用Intent 类中的众多功能之一。putExtra

于 2012-12-01T07:19:14.240 回答
1

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

于 2012-12-01T07:28:22.103 回答
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():
于 2012-12-01T07:49:05.747 回答
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"));

然后就可以在目标activity中恢复这个对象了

Bundle data = getIntent().getExtras();
Student student = data.getParcelable("student");
于 2012-12-01T08:00:01.457 回答
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。

于 2012-12-01T07:20:38.140 回答
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);
于 2012-12-01T07:20:42.703 回答
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");
于 2012-12-01T07:22:11.317 回答