在两个活动中共享变量?

时间:2013-10-06 11:31:01

标签: java android

我在Android应用程序中创建了两个活动。

变量在活动1中声明。现在我想使用该变量,同时更新活动2中的值和活动1。活动应该使用该变量的最新值。

我想我们可以使用Intents来做到这一点,但我想知道任何其他更简单的方法。

5 个答案:

答案 0 :(得分:2)

您可以使用SharedPreferences

从共享首选项中检索数据

SharedPreferences prefs = getPreferences(MODE_PRIVATE); 
String restoredText = prefs.getString("text", null);
if (restoredText != null) 
{
  int selectionStart = prefs.getInt("selection-start", -1);
  int selectionEnd = prefs.getInt("selection-end", -1);     
}

编辑来自共享偏好的数据

 SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
 editor.putString("text", mSaved.getText().toString());
 editor.putInt("selection-start", mSaved.getSelectionStart());
 editor.putInt("selection-end", mSaved.getSelectionEnd());
 editor.commit();

答案 1 :(得分:1)

Android文档是开始的好地方:

http://developer.android.com/guide/faq/framework.html#3

  Singleton class
  

您可以利用您的应用程序组件这一事实   通过使用单身人士在同一过程中运行。这是一个   设计为只有一个实例的类。它有静电   返回实例的getInstance()等名称的方法;   第一次调用此方法时,它会创建全局实例。   因为所有调用者都获得相同的实例,所以他们可以将其用作   互动点。例如,活动A可以检索实例   并调用setValue(3);以后的活动B可以检索实例和   调用getValue()来检索最后一个设置值。

答案 2 :(得分:0)

您可以在自定义Application课程中声明此变量,因为您可以通过调用getApplication()方法从每个活动访问该应用程序。

public class YourApplicationextends Application {

    public String yourVariable;

    // the rest of the code

}

您可以在AndroidManifest.xml中声明自定义应用程序类:

<application
    android:name=".YourApplication"
/>

答案 3 :(得分:0)

这是你在活动之间传递参数的方式

Intent i = new Intent(getApplicationContext(), SecondClass.class);
                // passing array index
                i.putExtra("passThisParam", passThisParam);
                Log.d("log tag","param passed===>>>"+passThisParam);
                startActivity(i);

并在下一个活动中接收此参数

Intent i = getIntent();
// Selected image id
int position = i.getExtras().getInt("position");

答案 4 :(得分:-1)

最简单的方法(不正确)是创建两个活动均可访问的全局变量。

实施例

在其中一个活动中将变量声明为public和static,如下所示:

FirstActivity.java

public static String variable = "value";

在其他活动中,您可以访问和修改变量,如下所示:

SecondActivity.java

FirstActivity.variable = "newValue";

现在,如果您在任何这些活动中打印变量,则该值应为“newValue”

如果要正确执行此操作,则应考虑使用Singleton类,SharedPreferences或使用Intent。它需要更多的工作,但最终你有一个更强大的代码。