android正确的生命周期来更新两个活动

时间:2016-01-26 00:36:47

标签: android sharedpreferences lifecycle

我在片段中设置了可见或不可见的文本视图:

startText = (TextView) view.findViewById(R.id.starting_text);
/** GET SHARED PREF VALUE */
SharedPreferences sharedPreferences = getActivity().getSharedPreferences("prefN_b", Context.MODE_PRIVATE);
nnS = sharedPreferences.getInt("numB", DEFAULT);
Log.d("THIS", Integer.toString(nnS));

if (nnS > 0){
  startText.setVisibility(View.INVISIBLE);
}else{
  startText.setVisibility(View.VISIBLE);
}

在另一项活动中,我更新了共享的pref:

/** GET SHARED PREF VALUE */
    SharedPreferences sharedPreferences = getSharedPreferences("prefN_b", Context.MODE_PRIVATE);
    nnS = sharedPreferences.getInt("numB", DEFAULT);

    /** GET TITLE FROM DATABASE */
    DatabaseConnector dbConnector = new DatabaseConnector(this);
    dbConnector.open();
    Cursor c = dbConnector.ListAllNotes();
    itemNN = c.getCount();

    /** SAVE/UPDATE SHARED PREF VALUE */
    SharedPreferences.Editor editorr = sharedPreferences.edit();
    editorr.putInt("numB", itemNN);
    editorr.commit();

现在都被置于相应活动的onCreate下,所以这只是在应用程序重启时更新,我希望它能在从活动转移到活动时工作,我应该在哪里放置代码?我试过onPause和onRestart组合,但没有工作..谢谢

解决: AS @Mobile Developer建议在下面我将两个代码分别放在onResume()上。在片段onResume()中,我不得不将textview fetch修改为:startText = (TextView) this.getActivity().findViewById(R.id.starting_text);

2 个答案:

答案 0 :(得分:0)

您可以在第一个活动中添加首选项侦听器(registerOnSharedPreferenceChangeListener),以便在首选项更改时更新TextView的可见性。

此外,正如Mobile Developer所述,您可以在第一个活动的onResume()中检查首选项,并在那里更新TextView。

答案 1 :(得分:0)

为什么不使用startActivityForResult(@Intent intent,@ int requestCode)而不是startActivity(@Intent) 第二个活动的数据将在onActivityResult中收到(在第一个活动中)