0
我試圖在應用程序中實現方向功能。該應用程序基本上由製表符組成,使用TabHost。每個選項卡都是一個包含少量活動的活動組。這個子活動中的每一個都使用AsyncTask運行後臺任務來提取服務器數據並呈現UI。成功登錄後不久無法獲取方向更改的tabHost對象
例如,
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。當我嘗試爲此選項卡設置定位功能時,問題就開始了。在活動(塔博恩),我增加了以下
@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"/>
已經添加了這個。 android:configChanges =「keyboard | keyboardHidden | orientation」 – Renjith
您是否已將它添加到具有TabHost的活動以及標籤中顯示的活動? – azertiti
是的,我加了! – Renjith