4

在我的 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”值不等于我第一个活动中分配的值。为什么会这样?我该怎么做?

谢谢!

4

8 回答 8

4

把你的价值放在string.xml

 <string name="common_value">DemoValue</string>

并在这样的任何活动中使用..

String common_value = getApplicationContext().getString(R.string.common_value);
于 2012-06-15T07:06:22.590 回答
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);
于 2012-06-15T07:03:03.113 回答
1

如果值始终相同,您可以创建一个public static final变量并通过 TestActivity.COMMON_VALUE 访问它。

如果你想在活动之间传递一个值,你应该使用Intents并添加一个带有你想要传递的值的额外值。

于 2012-06-15T07:05:40.157 回答
1

尝试这个 -

测试活动.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;
}
于 2012-06-15T07:07:21.187 回答
0

正如 Sana 所建议的,使用 SharedPreferences。

或者,使用全局常量类。如果你想坚持你所拥有的,那么你可以尝试: String str = TestActivity.this.commonValue;

您现有的代码正在创建活动的新实例,因此它不会具有您设置的值。

于 2012-06-15T07:06:16.770 回答
0

要在活动之间传递数据,请使用 Bundle。和方法,

intent.putExtra()

如果您想将数据设置为应用程序的全局数据,请创建一个应用程序类,并将数据保存在那里。

于 2012-06-15T07:06:24.703 回答
0

我们为每个应用程序都有一个应用程序文件,您可以在那里声明变量,因为应用程序文件可以从任何活动中获取,因此使用公共 getter 设置器并可以获取/设置它

您可以在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

也看看他们

于 2012-06-15T07:06:27.613 回答
0

commonValue 不等于您在 TestActivity onCreate 方法中设置的原因是因为尚未调用该函数。

其他人已经提到了解决方案。就像将价值放在捆绑中一样。

于 2012-06-15T07:06:51.390 回答