我在Android应用程序中创建了两个活动。
变量在活动1中声明。现在我想使用该变量,同时更新活动2中的值和活动1。活动应该使用该变量的最新值。
我想我们可以使用Intents来做到这一点,但我想知道任何其他更简单的方法。
答案 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。它需要更多的工作,但最终你有一个更强大的代码。