2

我在 Activity A 中有一个 TextView,这是用户大部分时间花在应用程序上的地方。我的应用程序使用共享首选项在 Activity C 中保存 TextView。当我加载 Activity A 和/或 B 时,如何从 Activity C 获取 TextView 而无需转到 Activity C。我知道我可以有意图地从 Activity 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 到达那里时才有效。

4

3 回答 3

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

        }
    });

现在,在 Activity A onCreate ->

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

而已。

于 2013-06-09T07:02:49.493 回答
1

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

要将您的TextView's String价值从一个传递Activity到另一个,要么

  • 将其保存在 Activity A 中使用editor.putString(...)并在 Activity B 中检索它,或者
  • Intent.
于 2013-06-09T07:03:02.510 回答
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 与首选项值

于 2013-06-09T07:03:33.947 回答