2014-02-21 3 views
0

Я использую действия для ввода данных в шаблон основной детали, и то, что я хотел достичь, обновляет данные каждый раз, когда я выхожу из действия и возвращаю результат, но каждый раз, когда я делаю что и попытаться выбрать 1 из элементов в шаблоне, я получаю это незаконное государственное исключение. Приведенный ниже код работает, если он не вызывается после закрытия операции.IllegalStateException при возврате из операции в шаблоне основного деталя

Когда я фиксирую менеджер фрагментов поддержки, я получаю эту ошибку, если я изменяю commit на 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

Вместо замены каждый раз новым фрагментом, почему бы вам не обновить данные? Я хочу иметь внутри CategoryDetailFragment (с XML-макета или от onCreate) и выполнять только обновление своих полей, передавая данные контента (объект ContentDetail) и обновляя представления внутри.

+0

Да, я пробовал это, но я столкнулся с другой проблемой, в то же время я не могу извлечь данные из базы данных. Запрос, который должен был вернуть 3 строки, возвращается 0. После этого, когда все загружается снова, я запускаю ту же функцию, и она тянет 3 строки, которые мне нужны. – user2227904

Смежные вопросы