screen1 から screen4 に値を渡す必要があります。値を静的として宣言しましたが、そのように値が渡されません。screen1 の後、screen2 と screen3 を呼び出す必要があります。screen1ボタンクリックで値を取得していますが、それらをscreen4に送信する方法。この点に関する提案はありがたく思います。
7 に答える
次のようなスタンドアロン クラスを作成できます。
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():
EXTRAS
新しいアクティビティを起動するために使用しているインテントで値を渡す必要があります。Intent クラスの多くの関数の 1 つを使用できます。putExtra
アクティビティの外で静的変数を宣言します。別のクラスを意味します。それらにアクセスしてみてください。それが動作します。
知らず知らずのうちにメモリ リークを引き起こす可能性があるため、static の使用は避けてください。また、static を使用する必要がある場合は、アクティビティのコンテキストを (直接的または間接的に) 保持していないことを確認してください。
特にデータが複雑で大規模な場合は、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");
これを行う最も簡単な方法は、アクティビティを開始するために使用しているインテントに値を渡すことです。
Intent intent = new Intent(getBaseContext(), Your4NumberScreen.class);
intent.putExtra("new_variable_name", "valueToPass");
startActivity(intent)
次に、新しいアクティビティで、これらの値を取得します。
Bundle extras = getIntent().getExtras();
if (extras != null) {
String value = extras.getString("new_variable_name");
}
編集:値を画面 4 に直接渡したい場合は、上記のコードを使用して、値を screen2 に渡し、次に screen2 から screen3 に、次に 3 から 4 に渡す必要があります。
送信者側:
Intent myIntent = new Intent(screen1.this, screen4.class);
myIntent.putExtra("intVariableName", intValue);
startActivity(myIntent);
受信側[画面4]:
Intent mIntent = getIntent();
int intValue = mIntent.getIntExtra("intVariableName", 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");