我在我的 android 应用程序中创建了两个活动。
该变量在活动 1 中声明。现在我想使用该变量,同时更新它在活动 2 和活动 1 中的值。并且活动应该使用该变量的最新值。
我想我们可以使用 Intents 来做到这一点,但我想知道任何其他更简单的方法。
您可以使用 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);
}
从 sharedpreference 编辑数据
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();
android 文档是一个很好的起点:
http://developer.android.com/guide/faq/framework.html#3
Singleton class
您可以通过使用单例来利用应用程序组件在同一进程中运行这一事实。这是一个设计为只有一个实例的类。它有一个名为 getInstance() 的静态方法,它返回实例;第一次调用此方法时,它会创建全局实例。因为所有调用者都获得相同的实例,所以他们可以将其用作交互点。例如,活动 A 可以检索实例并调用 setValue(3);稍后的活动 B 可能会检索实例并调用 getValue() 以检索最后设置的值。
您可以在自定义Application
类上声明此变量,因为您可以通过调用getApplication()
方法从每个活动访问应用程序。
public class YourApplicationextends Application {
public String yourVariable;
// the rest of the code
}
您可以在以下位置声明您的自定义应用程序类AndroidManifest.xml
:
<application
android:name=".YourApplication"
/>
这就是您在活动之间传递参数的方式
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");
最简单的方法(不是正确的方法)是创建两个活动都可以访问的全局变量。
例子
将其中一项活动中的变量声明为公共和静态变量,如下所示:
第一活动.java
public static String variable = "value";
在其他活动中,您可以像这样访问和修改变量:
SecondActivity.java
FirstActivity.variable = "newValue";
现在,如果您在任何这些活动中打印变量,则值应该是“newValue”
如果你想正确地做到这一点,你应该考虑使用 Singleton 类、SharedPreferences 或使用 Intents。这需要更多的工作,但最终你会得到一段更健壮的代码。