我需要将值从 screen1 传递到 screen4。我将这些值声明为静态的,但这样的值不会传递。在 screen1 之后,我需要调用 screen2 和 screen3。在 screen1 按钮中单击我正在获取值,但如何将它们发送到 screen4。在这方面的任何建议将不胜感激。
问问题
81 次
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 回答