Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从主详细信息模板中的活动返回时发生IllegalStateException_Android_Android Fragments_Android Fragmentactivity - Fatal编程技术网

Android 从主详细信息模板中的活动返回时发生IllegalStateException

Android 从主详细信息模板中的活动返回时发生IllegalStateException,android,android-fragments,android-fragmentactivity,Android,Android Fragments,Android Fragmentactivity,我正在使用“活动”将数据输入到主详细信息模板中,我想要实现的是每次退出“活动”并返回结果时刷新数据,但每次我这样做并尝试在模板中选择一个项目时,我都会收到此非法状态异常。 如果在关闭活动后未调用下面的代码,则该代码有效 当我提交support fragment manager时,我得到了这个错误,如果我将commit更改为CommitteAllowingStateLoss,代码将继续,但不会重新加载详细数据。 对此问题的任何帮助都将不胜感激 @Override public void onIte

我正在使用“活动”将数据输入到主详细信息模板中,我想要实现的是每次退出“活动”并返回结果时刷新数据,但每次我这样做并尝试在模板中选择一个项目时,我都会收到此非法状态异常。 如果在关闭活动后未调用下面的代码,则该代码有效

当我提交support fragment manager时,我得到了这个错误,如果我将commit更改为CommitteAllowingStateLoss,代码将继续,但不会重新加载详细数据。 对此问题的任何帮助都将不胜感激

@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;
        }
    }
@覆盖
已选择公共id(内部id){
如果(mTwoPane){
Bundle参数=新Bundle();
arguments.putInt(categorydeailfragment.ARG_ITEM_ID,ID);
CategoryDetailFragment=新CategoryDetailFragment();
fragment.setArguments(参数);
getSupportFragmentManager().beginTransaction()
.replace(R.id.category_detail_container,fragment).commit();
如果(findViewById(R.id.startUpPicture)!=null){
ImageView IV_启动=
(ImageView)findViewById(R.id.startUpPicture);
IV_启动.设置可见性(查看.消失);
}
}否则{
Intent detailIntent=新的Intent(这个,categorydeailactivity.class);
detailIntent.putExtra(categorydeailfragment.ARG_ITEM_ID,ID);
星触觉(意向);
}
}
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
开关(请求代码){
案例0:
onItemSelected(data.getIntExtra(“CAT_ID”,-1));
打破
案例1:
SQLCategories _sql=新的SQLCategories(CategoryListActivity.this);
ArrayList_categories=_sql.getAllCategories();
_CLFragment.getListView().setAdapter(新类别Adapter(CategoryListActivity.this,_categories));
未选择(-1);
打破
违约:
if(resultCode==1){
onItemSelected(data.getIntExtra(“CAT_ID”,-1));
打破
}
}

与其每次都用新的片段替换,为什么不更新数据?我的意思是从一开始就将
CategoryDetailFragment
放在内部(从XML布局或从
onCreate
),通过传递内容数据(
ContentDetail
对象)只对其字段执行更新并更新内部的viewss。

是的,我尝试了,但遇到了另一个问题,在这期间我无法从数据库中提取任何数据。本应返回3行的查询返回0。之后,当再次加载所有数据时,我启动了相同的函数,它提取了我需要的3行数据。