2014-02-21 52 views
0

我正在使用活動將數據輸入到主詳細信息模板,而且我想要實現的是每次退出活動並返回結果時刷新數據,但每次執行並嘗試選擇模板中的一個項目我得到這個非法狀態異常。 下面的代碼在關閉活動後未被調用時有效。IllegalStateException當從主動詳細模板中的活動返回時

當我提交支持片段管理器時,我得到這個錯誤,如果我改變提交commitAllowingStateLoss代碼繼續,但它不重新加載詳細數據。 任何有關這個問題的幫助將不勝感激。

@Override 
public void onItemSelected(int id) { 
    if (mTwoPane) { 
     Bundle arguments = new Bundle(); 
     arguments.putInt(CategoryDetailFragment.ARG_ITEM_ID, id); 
     CategoryDetailFragment fragment = new CategoryDetailFragment(); 
     fragment.setArguments(arguments); 
     getSupportFragmentManager().beginTransaction() 
       .replace(R.id.category_detail_container, fragment).commit(); 
     if (findViewById(R.id.startUpPicture)!=null){ 
      ImageView IV_StartUp = 
      (ImageView) findViewById(R.id.startUpPicture); 
      IV_StartUp.setVisibility(View.GONE); 
     } 
    } else { 
     Intent detailIntent = new Intent(this, CategoryDetailActivity.class); 
     detailIntent.putExtra(CategoryDetailFragment.ARG_ITEM_ID, id); 
     startActivity(detailIntent); 
    } 

} 
@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    switch(requestCode){ 
    case 0: 
     onItemSelected(data.getIntExtra("CAT_ID", -1)); 
     break; 
    case 1: 
     SQLCategories _sql = new SQLCategories(CategoryListActivity.this); 
     ArrayList<Categories> _categories =_sql.getAllCategories(); 
     _CLFragment.getListView().setAdapter(new CategoriesAdapter(CategoryListActivity.this, _categories)); 
     onItemSelected(-1); 
     break; 
    default: 
     if(resultCode==1){ 
      onItemSelected(data.getIntExtra("CAT_ID", -1)); 
      break; 
     } 
    } 

回答

0

而不是用一個新的片段替換每一次爲什麼不更新數據?我的意思是從一開始(從XML佈局或從onCreate)開始內部的CategoryDetailFragment,並通過傳遞內容數據(ContentDetail對象)和更新視圖內部來僅執行其字段的更新。

+0

是的,我試過了,但我遇到了另一個問題,同時我無法從數據庫中提取任何數據。一個應該返回3行的查詢返回0.然後,當所有再次加載時,我啓動相同的功能,並拉出我需要的3行。 – user2227904

相關問題