アプリに向き機能を実装しようとしています。このアプリは、TabHost を使用して基本的にタブで構成されています。各タブは、いくつかのアクティビティを含むアクティビティ グループです。この子アクティビティはそれぞれ、AsyncTask を使用してバックグラウンド タスクを実行し、サーバー データを引き出して UI をレンダリングします。
例えば、
HomeActivity- tab activity class that creates all the tabs
UserActivity- an activity group class representing a tab (say Tab 1)
TabOne- child activity inside UserActivity group
ログインに成功するとすぐにタブ 1 が表示されます。このタブに方向機能を設定しようとしたときに問題が発生しました。アクティビティ (TabOne) 内に、次を追加しました
@Override
public void onSaveInstanceState(Bundle outState) {
System.out.println("saving state..!");
outState.putStringArray("imageUrls", imageArray);
super.onSaveInstanceState(outState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
System.out.println("restoring state..!");
imageArray = savedInstanceState.getStringArray("imageUrls");
super.onRestoreInstanceState(savedInstanceState);
}
「imageUrls」状態を取得できました。しかし、後で、静的タブのホスト変数にアクセスできませんでした。
HomeActivity.tabHost.getTabWidget().getChildAt(1)
tabHost 変数が null です! 私はその状態を保存していません。どうすれば tabHost インスタンスを保存できますか?
他のコミュニティの投稿を調査しているときに、「onRetainNonConfigurationInstance()」を見つけました。私は同じことを実装しました。
public Object onRetainNonConfigurationInstance() {
System.out.println("retaining state..!");
return HomeActivity.tabHost;
}
ただし、このオブジェクトは null として返されます。tabHost を使用してアプリの向きの変更を処理する手順を教えてもらえますか?
何かわかりにくいところがあれば聞いてください。
前もって感謝します!
解決済み:マニフェストのアクティビティ タグに screenSize を追加すると、問題が修正されました。
<activity android:name=".HomeActivity"
android:configChanges="orientation|screenSize"/>