0

タブ レイアウトに 2 つのアクティビティがあります。最初のアクティビティでは要素をリストビューに追加し、2 番目のアクティビティではリストビューが表示されます。問題は、最初のアクティビティでリストビューに要素を追加した後、アプリケーション全体を再起動するまでリストビューが2番目のアクティビティで表示されないことです。

onCreate メソッド内で listview を作成していて、アクティビティが完全に破棄されて再作成されたときにのみ onCreate メソッドが実行されるため、これが発生すると推測しています。しかし、これは tabLayout であるため、listView に要素を追加する前に、onCreate が既に実行されています。

私の質問は次のとおりです:tabLayoutでクリックされるたびにonCreateでアクティビティを実行するにはどうすればよいですか? それとも、listView を onCreate の外に置いて更新するなどの別の方法がありますか?

役立つ場合、これは onCreate 内のコードです。

listView = (ListView) findViewById (R.id.mainListView);
listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, recordedFilesArray);
listView.setEmptyView(findViewById(R.id.emptyListView));
listView.setAdapter(listAdapter);

リストビューを更新するためにアプリを再起動する必要があるという事実を除いて、すべてが完璧に機能します。

4

1 に答える 1

0

誰かが今より良い解決策を教えてくれました(コメントを確認してください)が、私はまだ自分の質問に答えます。さらに調査を行ったところ、あることがわかりました。

とても簡単です。タブのインテントを作成するときは、FLAG_ACTIVITY_CLEAR_TOP を追加するだけで機能します。

このような:

Intent libraryIntent = new Intent(this, RecordedLibrary.class);
libraryIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
于 2013-08-08T23:39:40.950 に答える