2015-08-22 93 views
0

我有一個包含Tablayout的活動,並且在每個選項卡中,我有兩個包含recyclerview的片段。無法保存包含片段的活動的實例狀態

當我嘗試單擊recyclerview中的項目時,我想從其他活動傳輸並保存源活動的實例狀態...但是,當我試圖訪問該包時,它將返回null。

這是我的onClick()被點擊了我的名爲CasesResultsTab選項卡中的項目時:

@Override 
public void onClick(View v, int position) { 
    Case oCase = list.get(position); 
    Intent intent = new Intent(getActivity(), ViewCaseActivity.class); 
    intent.putExtra("ID", oCase.getCaseId()); 
    intent.putExtra("className", "SearchableActivity"); 

    getActivity().startActivity(intent); 
} 

所以在那之後,我現在的儲蓄父活動的狀態是這樣的:

@Override 
    public void onSaveInstanceState(Bundle savedInstanceState) { 
     savedInstanceState.putString("query", query); 
     super.onSaveInstanceState(savedInstanceState); 
    } 

和onCreate我正在像這樣訪問:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_searchable); 

    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    this.setSupportActionBar(toolbar); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    if(savedInstanceState != null){ 
     this.query = savedInstanceState.getString("query"); 
     Log.d("JC","Dito"); 
    } else { 
     Intent intent = getIntent(); 
     if (Intent.ACTION_SEARCH.equals(intent.getAction())) { 
      this.query = intent.getStringExtra(SearchManager.QUERY); 
     } 
    } 

    Log.d("JC", this.query); 

    setUpTabs(); 
} 

當我試圖記錄查詢時,它返回一個呃ror says java.lang.NullPointerException:println需要一條消息 從技術上講,我的Bundle在這一點上是null。

這是爲什麼?

謝謝!

+0

哪裏或哪個代碼崩潰?解釋或發佈logcat錯誤。 –

回答

0

當你測試這個時,是整個Bundle爲null還是隻是查詢字段?另外,你確定你已經正確地測試了狀態恢復嗎?爲了觸發onSaveInstanceState被調用,您必須在「設置」中將「不保留活動」設置爲true,然後將應用程序背景放回前臺,或旋轉手機進行視圖配置更改。