2013-07-24 26 views
1

我有一個包含3個圖像按鈕的主要活動。這些作爲選項卡/類別,可以在點擊時提取3個不同的活動。我在主頁選項卡上有一個列表視圖,其中填充了網站的數據。該應用程序允許用戶通過點擊頂部的標籤圖標(這會拉出新的活動)來導航類別。當移動到新活動並返回到前一個活動時保存字符串數組列表的內容

我已經在onSaveInstanceState中使用了.putStringArrayList(),在onRestoreInstanceState中使用了.getStringArrayList()。

我的問題:

當我更新的主頁選項卡上的列表視圖,單擊頂部的另一個標籤定位到一個新的活動,然後返回按下「返回」硬鍵主頁選項卡活動,列表內容被保留。

但是,如果我更新列表,導航到一個新選項卡(活動),然後通過單擊主頁圖標/選項卡(而不是硬後退鍵)導航回到主頁活動,然後列表內容將消失並且必須重新加載。

實際上,在我看來,即使用戶覺得他要回到prev選項卡,該應用程序假定它正在向前移動到該選項卡,並且存在一些數據丟失。

我該如何解決這個問題?

謝謝!

這是我的代碼:

int headlinessize; 
int linkssize; 
ArrayList<String> headlines = new ArrayList<String>(); 
    ArrayList<String> links = new ArrayList<String>(); 
    private ArrayAdapter<String> adapter; 

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 


    savedInstanceState.putStringArrayList("headlines", headlines); 
    savedInstanceState.putInt("headlinessize", headlinessize); 
    savedInstanceState.putStringArrayList("urls", links); 
    savedInstanceState.putInt("linkssize", linkssize); 
    super.onSaveInstanceState(savedInstanceState); 
} 

@SuppressWarnings("unchecked") 
@Override 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_mainscreen); 

    if (savedInstanceState!= null){ 
    headlines.addAll(savedInstanceState.getStringArrayList("headlines")); 
    links.addAll(savedInstanceState.getStringArrayList("urls")); 
    headlinessize=savedInstanceState.getInt("headlinessize"); 
    linkssize=savedInstanceState.getInt("linkssize"); 
    } 
      . 
      . 
      . 
      } 
+0

在我看來,像你應該使用內置的動作條翼片(http://developer.android.com/guide/topics/ui/actionbar.html#標籤)。然後,您可以對每個選項卡使用碎片,而不是活動,這樣可以更輕鬆地保留狀態。 – jburns20

+0

是的! :)我想這樣做。我是Android的初學者,並且不知道我必須升級我的SDK才能使用它。無論如何,我從這條路開始,想完成它!謝謝! – abishekshenoy

回答

0

您應該使用PersistentState應用(SharedPreferences)的 因此,讓您的活動的 的onPause()方法,並有保存SharedPreferences

SharedPreferences settings = getSharedPreferences("key", MODE_PRIVATE); 
SharedPreferences.Editor editor = settings.edit(); 
editor.put.... 

隨後的onCreate檢查SharedPreferences.contains(「key」); 並從那裏重新加載數據與

SharedPreferences settings = getSharedPreferences("key", MODE_PRIVATE); 
settings.get... 
+0

感謝您的幫助!我得到它的工作! – abishekshenoy

相關問題