【发布时间】:2015-04-15 18:35:51
【问题描述】:
任何帮助将不胜感激,因为我快完成了,这件小事让我非常烦恼!
我有三个活动之一,在 onCreate() 它从数据库查询填充 TextView。本次活动也是主要活动。您通过操作栏进行的其他 2 个活动,如下面的代码所示。我在这里有savedInstanceState() 和onRestoreInstanceState() 都在玩,它们只有在你完全退出应用程序时才起作用,这很好,但我也想要它,这样当你从actionBar 转到另一个Activity 时,然后TextView不必重新查询数据库。我希望textview 与您离开时相同,因为每次您使用操作栏离开时,textView 都会触发一个全新的查询,而我不希望这样。我希望它在用户第一次到达时仍然具有第一次查询的结果。
我尝试使用finish() 和onStop() 方法来帮助终止活动,以便在活动被销毁但它不工作或我没有将它放在正确的位置时调用saveOnInstanceState()地方。有什么想法吗?!?!?!
在 onCreate() 中应用 savedInstanceState:
if(savedInstanceState != null){
String SavedStory = savedInstanceState.getString(SavedStoryHere);
String SavedTitle = savedInstanceState.getString(SavedTitleHere);
OpenningTextView.setText(SavedStory);
TitleTextView.setText(SavedTitle);
}
else{
OpenningTextView.setText(StoryText);
TitleTextView.setText(TitleString);
}
onSavedInstanceState() 和 onRestoreInstanceState():
protected void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
String text = OpenningTextView.getText().toString();
String titleText = TitleTextView.getText().toString();
savedInstanceState.putString(SavedStoryHere, text);
savedInstanceState.putString(SavedTitleHere, titleText);
}
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
OpenningTextView.setText(savedInstanceState.getString(SavedStoryHere));
TitleTextView.setText(savedInstanceState.getString(SavedTitleHere));
}
通过 ActionBar 进入不同的活动:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.Openning_Screen:
Toast.makeText(this, "This is the Story of the Day", Toast.LENGTH_SHORT)
.show();
return true;
case R.id.The_List:
Intent A_ListIntent = new Intent(this, A_Where_List.class);
startActivity(A_ListIntent);
return true;
case R.id.Settings:
Intent SavedStoriesIntent = new Intent(this, Settings.class);
startActivity(SavedStoriesIntent);
return true;
default:
return super.onOptionsItemSelected(item);
}
【问题讨论】:
标签: android android-activity android-actionbar textview android-savedstate