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