0

重複の可能性:
Android のアクティビティ間でデータを渡す

そのため、2 つのアクティビティがあり、最初のアクティビティで 1 つの変数を保存し、2 番目のアクティビティで使用する必要があります。誰でも私を助けることができますか?ありがとう!

4

9 に答える 9

3

次のようなものを使用します。

    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 :(
        }
    }
}
于 2012-06-11T11:03:29.247 に答える
2

複雑にしないでおく。あるクラスでは、他のクラスで変数の値を設定し、そのクラスのインスタンスを使用してそれを取得します。

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();

   }
}
于 2012-06-11T11:03:26.233 に答える
1

理解しているように、要件はいくつかのアクティビティクラスで変数値を使用することです。それらはJAVAクラスであることを意味するため、タスクに静的変数を使用できます。

このようなクラスがあるとしましょう。

public class Activity1 extends Activity{
static String name="abc";
}

その名前変数を他のクラスで使用する場合は、次を使用できます。

public class Activity2 extends Activity{
String name2=Activity1.name;
}
于 2012-06-11T11:11:52.367 に答える
1

最初のアクティビティ:

    ....
    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);
    ...... 
于 2012-06-11T11:01:48.907 に答える
0

共有優先度を使用する場合、この値を任意のアクティビティで使用できます。

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);
于 2012-06-11T11:19:56.533 に答える
0

すべてのクラスで共有されるため、変数を静的にします。

于 2012-06-11T11:13:28.143 に答える
0

これを行う1つの方法は次のとおりです。

class Class1 {
   private int someValue = 0
   void doSomething(Class2 anotherObj) {
       this.someValue = 1;
       anotherObj.setValue(this.someValue);
   }
}

他にもたくさんの方法があります:)

于 2012-06-11T11:01:39.273 に答える
0

Intent.putExtra(yourData); を使用して、最初のアクティビティ データを 2 番目のアクティビティに渡すことができます。

于 2012-06-11T11:03:02.757 に答える
0

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.
于 2012-06-11T11:44:52.393 に答える