重複の可能性:
Android のアクティビティ間でデータを渡す
そのため、2 つのアクティビティがあり、最初のアクティビティで 1 つの変数を保存し、2 番目のアクティビティで使用する必要があります。誰でも私を助けることができますか?ありがとう!
重複の可能性:
Android のアクティビティ間でデータを渡す
そのため、2 つのアクティビティがあり、最初のアクティビティで 1 つの変数を保存し、2 番目のアクティビティで使用する必要があります。誰でも私を助けることができますか?ありがとう!
次のようなものを使用します。
Intent intent = new Intent(this, ClassImCalling.class);
intent.putExtra("variable", myvariable);
startActivityForResult(intent, int_identifier);
そして、他のアクティビティでは:
intent = getIntent();
var=intent.getStringExtra("variable");
それを呼び出したアクティビティに戻るには (意図は上記の getIntent() と同じです):
setResult(RESULT_OK, intent);
finish();
最初のアクティビティに戻ると、次のようになります。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == int_identifier) {
if (resultCode == RESULT_OK) {
Do suff
}else if(resultCode == RESULT_CANCELED){
Action was cancelled :(
}
}
}
複雑にしないでおく。あるクラスでは、他のクラスで変数の値を設定し、そのクラスのインスタンスを使用してそれを取得します。
public class Activity1 {
private String var;
public Activity1() {
setVar("some_value");
}
public String getVar() {
return this.var;
}
public void setVar(String var) {
this.var = var;
}
}
public class Activity2 {
public void doSmth() {
Activity1 a = new Activity1();
String varValue = a.getVar();
}
}
理解しているように、要件はいくつかのアクティビティクラスで変数値を使用することです。それらはJAVAクラスであることを意味するため、タスクに静的変数を使用できます。
このようなクラスがあるとしましょう。
public class Activity1 extends Activity{
static String name="abc";
}
その名前変数を他のクラスで使用する場合は、次を使用できます。
public class Activity2 extends Activity{
String name2=Activity1.name;
}
最初のアクティビティ:
....
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra(Consts.EXTRA_EDIT_MODE_KEY, 123);
....
intent.putExtra(_some_key_, _some_data_);
intent.putExtra(_some_key_, _some_data_);
startActivity(intent);
セカンド アクティビティ:
.....
Intent intent = getIntent();
int mode = intent.getIntExtra(Consts.EXTRA_EDIT_MODE_KEY, -1);
......
共有優先度を使用する場合、この値を任意のアクティビティで使用できます。
ManageSharesPrefsのコードは次のとおりです。
SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putString(MY_NAME, "Sai");
prefsEditor.putString(MY_WALLPAPER, "f664.PNG");
prefsEditor.commit();
として値を取得します
SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
String prefName = myPrefs.getString(MY_NAME, "nothing");
String wallPaper = myPrefs.getString(MY_WALLPAPER, null);
すべてのクラスで共有されるため、変数を静的にします。
これを行う1つの方法は次のとおりです。
class Class1 {
private int someValue = 0
void doSomething(Class2 anotherObj) {
this.someValue = 1;
anotherObj.setValue(this.someValue);
}
}
他にもたくさんの方法があります:)
Intent.putExtra(yourData); を使用して、最初のアクティビティ データを 2 番目のアクティビティに渡すことができます。
Bundle オブジェクトを使用して、2 つのアクティビティ間で変数を共有できます。これは私がそれを使用する方法です:
(1) まず、エクストラとして変数をバンドルに入れます。FirstActivity に変数があり、それを SecondActivity に送信したい場合、これを (FirstActivity に) 配置する方法は次のとおりです。
String variableValue="x"; // it holds some value which you want to pass to SecondActivity.
Intent secondIntent = new Intent(view.getContext(), SecondActivity.class);
Bundle bundleObj = new Bundle();
bundleObj.putString("variableName", variableValue);
secondIntent.putExtras(bundleObj);
startActivityForResult(secondIntent, 0);
(2) これは、SecondActivity (onCreate() メソッド内) で取得する方法です。
Bundle extras = getIntent().getExtras();
String variableValue = extras.getString("variableName");
** Similarly you can pass the integer and other datatyped values as well.