我在活动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来实现它。
答案 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放在首选项值
中