0

私はほぼ完成していて、この小さなことが私をとても悩ませているので、助けていただければ幸いです!

データベースのクエリからデータをonCreate()入力する3 つのアクティビティのうちの 1 つがあります。TextViewこの活動も主な活動です。以下のコードが示すように、アクション バーを介して移動する他の 2 つのアクティビティ。私はここで と の両方savedInstanceState()onRestoreInstanceState()使用しており、アプリケーションを完全に終了したときにのみ機能しますが、これは良いことですが、actionBar から別のアクティビティに移動したときに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);
    }
4

2 に答える 2

2

あなたが見ているのは、期待される動作です。

呼び出しstartActivity(intent)ても現在のアクティビティは終了/破棄されません。そのため、onSaveInstanceState呼び出されません。ユーザーが戻るボタンを押すと、Activity はページを離れたときの状態になります。

あなたが見るべきものは、あなたの主要なアクティビティを離れて再び入るために呼び出されますonPause.onResume

于 2015-04-15T18:40:22.653 に答える