我正在开发一个Android应用程序。 我有一些活动。我必须有一个可以从所有活动中获得的对象。 任何想法如何组织它?
答案 0 :(得分:11)
以下列方式使用全局Application
对象:
package com.yourpackagename;
public class App extends Application {
}
在AndroidManifest.xml
:
<application android:name=".App">
要从Activity
:
App globalApp = (App) getApplicationContext();
应用程序启动时,App
类将自动实例化。只要申请流程有效,它就可以使用。它可以作为一个全球商店,您可以在其中放置您的东西,并在整个应用程序生命周期内访问它们。
答案 1 :(得分:3)
有几种方法可以做到这一点。如果您要共享的对象是一个String(或者很容易用String描述),我建议Shared Preferences。它用作在应用程序内共享数据的键值存储。
如果不是这种情况(即字符串的适用性),您可以考虑将其作为额外内容传递给启动各种活动的Intent。例如:
Intent newActivity = new Intent(CurrentActivity.class, ActivityToLaunch.class);
newActivity.putExtra("object_key", Bundle_With_Your_Object);
有关此策略的更多详细信息(特别是关于Bundle类,如果您不熟悉),我会阅读this Android doc。
答案 2 :(得分:1)
在这种情况下,您可以使用SharedPreferences:
添加或修改:
SharedPreferences prefs = this.getSharedPreferences("Cusom Name", Activity.MODE_PRIVATE);
prefs.edit().putString("your_key", value).commit();
要清除:
SharedPreferences prefs = this.getSharedPreferences("Cusom Name", Activity.MODE_PRIVATE);
prefs.edit().clear();
获取价值:
SharedPreferences prefs = this.getSharedPreferences("Cusom Name", Activity.MODE_PRIVATE);
String value = prefs.getString("your_key", "");
答案 3 :(得分:0)
首先,创建一个名为MasterActivity的类,它扩展Activity并定义您的全局对象。
public class MasterActivity extends Activity
{
public Object mObject;
}
然后,您必须使用您的MasterActivity扩展您的主要活动类:
// your main activity
public class MainActivity extends MasterActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// you can now use mObject in your main class
mObject.yourmethod();
}
}
通过这种方式,您只需通过扩展MasterActivity而不是Activity,就可以在所有活动中使用您的对象。