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"/> 

回答

0

您可以在清單中的參數

android:configChanges="orientation" 

添加到您的活動。我認爲它做到了你想要的。它應該看起來像:

<activity 
     android:name="com.your.package.YourActivity" 
     android:configChanges="orientation" 
</activity> 
+0

已經添加了這個。 android:configChanges =「keyboard | keyboardHidden | orientation」 – Renjith

+0

您是否已將它添加到具有TabHost的活動以及標籤中顯示的活動? – azertiti

+0

是的,我加了! – Renjith