0

可能重复:
在 Android 中的活动之间传递数据

所以我有两个活动,我需要在第一个活动中保存一个变量,并在第二个活动中使用它。谁能帮我?谢谢!

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

第一个活动:

    ....
    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 回答
1

据了解,您的要求是在多个 Activity 类中使​​用变量值。因为它们的意思是它们是 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 回答
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 回答
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

我猜这是一种方法:

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); 将第一个活动数据传递给第二个活动;

于 2012-06-11T11:03:02.757 回答