如何在java中的类之间共享变量

时间:2012-06-11 10:57:06

标签: java android

  

可能重复:
  Passing data between activities in Android

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

9 个答案:

答案 0 :(得分: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 :(
        }
    }
}

答案 1 :(得分: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();

   }
}

答案 2 :(得分: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);

SecondActivity:

    ..... 
    Intent intent = getIntent();
    int mode = intent.getIntExtra(Consts.EXTRA_EDIT_MODE_KEY, -1);
    ...... 

答案 3 :(得分:1)

了解您的要求是在几个Activity类中使用变量值。因为它们是JAVA类,所以你可以为你的任务使用静态变量。

假设你有一个这样的课程,

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

如果要在其他类中使用该名称变量,可以使用

public class Activity2 extends Activity{
String name2=Activity1.name;
}

答案 4 :(得分:0)

这是一种做法,我想:

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

还有很多其他方法:)

答案 5 :(得分:0)

您可以使用intent.putExtra(yourData);

将第一个活动数据传递给第二个活动

答案 6 :(得分:0)

将变量设为静态,因为它由所有类共享。

答案 7 :(得分: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);

答案 8 :(得分:0)

您可以使用Bundle对象在两个活动之间共享变量。这就是我使用它的方式:

(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.