在我的Android应用程序中,我必须为所有活动使用通用字符串值。 “commonValue”是我想在所有活动中使用的常见字符串值。主要活动的相关代码如下:
public class TestActivity extends Activity {
public String commonValue;//THE COMMON STRING FOR ALL ACTIVITIES
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
commonValue = "DemoValue";
}
}
在我的下一个活动中,我创建了一个“TestActivity”类的对象,并尝试将“testValue”字符串分配给另一个名为“str”的字符串
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.testlist);
TestActivity obj = new TestActivity();//OBJECT OF MAIN ACTIVITY
String str = obj.commonValue;
}
但第二个活动中的“str”值不等于我第一个活动中指定的值。为什么那&我怎么能这样做?
谢谢!
答案 0 :(得分:4)
将您的价值放在string.xml
<string name="common_value">DemoValue</string>
并在任何类似的活动中使用..
String common_value = getApplicationContext().getString(R.string.common_value);
答案 1 :(得分:3)
开始在您的应用中使用SharedPreferences。
在你的第一个活动中你会做
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("commonValue", "DemoValue");
editor.commit();
在你的第二个活动中
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
String str = settings.getString("commonValue", null);
答案 2 :(得分:1)
如果值始终相同,您可以创建public static final
变量并通过TestActivity.COMMON_VALUE访问它。
如果你想在活动之间传递一个值,你应该使用Intents并添加一个额外的值和你想传递的值。
答案 3 :(得分:1)
试试这个 -
<强> TestActivity.java 强>
public class TestActivity extends Activity {
public static String commonValue;//THE COMMON STRING FOR ALL ACTIVITIES
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
commonValue = "DemoValue";
}
}
另一项活动
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.testlist);
String str = TestActivity.commonValue;
}
答案 4 :(得分:0)
正如Sana建议的那样,使用SharedPreferences。
或者,使用全局常量类。如果你想坚持你所拥有的,那么你可以尝试:
String str = TestActivity.this.commonValue;
您现有的代码正在创建活动的新实例,因此它不会具有您设置的值。
答案 5 :(得分:0)
要在活动之间传递数据,请使用Bundle。和方法,
intent.putExtra()
如果您想将数据设置为应用程序的全局数据,请创建一个应用程序类,并将数据保存在那里。
答案 6 :(得分:0)
我们为每个应用程序都有一个应用程序文件,您可以在那里声明变量,因为应用程序文件可以从任何活动中获取,因此使用公共getter setter并可以获取/设置
如developer.android http://developer.android.com/resources/faq/framework.html
提及的那样,你可以提起诉讼。Singleton class
A public static field/method
A HashMap of WeakReferences to Objects (almost same as my above solution )
Persistent Objects
也看看它们
答案 7 :(得分:0)
commonValue与TestActivity onCreate方法中设置的不相同的原因是因为该函数尚未被调用。
其他人已经提到了解决方案。就像将值放在一个包中一样。