我正在使用活动将数据输入到主详细信息模板中,我想要实现的是每次退出活动并返回结果时刷新数据,但每次我这样做并尝试选择其中一个项目我得到这个非法状态异常的模板。 如果在关闭活动后没有调用它,则下面的代码可以工作。
当我提交支持片段管理器时,我收到此错误,如果我将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 :(得分:0)
为什么不更新数据,而不是每次用新片段替换?我的意思是从一开始就将CategoryDetailFragment
放在里面(来自XML布局或来自onCreate
),并通过传递内容数据(ContentDetail
对象)来仅对其字段执行更新,更新里面的视图。