如何从其他Activity获取TextView而不来自或转到该Activity?

时间:2013-06-09 05:51:03

标签: android android-intent textview

我在活动A中有一个TextView,这是用户大部分时间都花在应用上的地方。我的应用程序使用共享首选项在活动C中保存TextView。 当我加载活动A和/或B时,如何在不转到活动C的情况下从活动C获取TextView。 我知道我可以通过意图获取活动C中的TextView,但我认为只有在我来自活动C时我才能使用。

活动A当前以这种方式获取TextView

Intent id = getIntent();
if (id.getCharSequenceExtra("idid") != null) {
final TextView setmsg = (TextView)findViewById(R.id.loginid2);
setmsg.setText(id.getCharSequenceExtra("idid"));                

}

但这只适用于另一个Activity使用putExtra来实现它。

3 个答案:

答案 0 :(得分:1)

从问题来看,我理解的是,

每当我加载Activity A / B时,它的Text都会显示Activity C中的值。不是吗?

当然我们可以使用SharedPreference。试试这个:

在活动C中 - >

textview.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(ActivityC.this);
SharedPreferences.Editor editor = pref.edit();
    editor.putString("idid", ""+s);
    editor.commit();

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });

现在,在活动A onCreate - >

SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(ActivityA.this);
setmsg.setText(pref.getString("idid", "null"));

多数民众赞成。

答案 1 :(得分:1)

您无法使用View保存Sharedpreferences个实例。只有原始类型可以保存在SharedPreferences中。请参阅SharedPreferences.Editor's put方法。

要将TextView's String值从一个Activity传递到另一个{

  • 使用editor.putString(...)将其保存在活动A中,并在活动B或
  • 中检索它
  • Intent
  • 中的活动之间传递

答案 2 :(得分:1)

您没有获得TextView,而是获得String首选项:

public static void setLangName(Context context, String name) {
    SharedPreferences.Editor editor = context.getSharedPreferences(
            FILE_NAME, Context.MODE_PRIVATE).edit();
    editor.putString(KEY_LANG_NAME, name);
    editor.commit();
}

public static String getLangName(Context context) {
    return context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE)
            .getString(KEY_LANG_NAME, null);
}

在您的活动布局中,您将TextView和setText放在首选项值