Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.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 替换AppCompative活动中的片段_Android_Android Fragments_Appcompatactivity - Fatal编程技术网

Android 替换AppCompative活动中的片段

Android 替换AppCompative活动中的片段,android,android-fragments,appcompatactivity,Android,Android Fragments,Appcompatactivity,我有一个带SlideMenu的Android应用程序 这是我拥有侧菜单的大部分主要活动: public class MainActivity extends ActionBarActivity { private ActionBarDrawerToggle sideMenuToggle; private DrawerLayout sideMenuLayout; private SideMenuAdapter mAdapter; ... private

我有一个带SlideMenu的Android应用程序

这是我拥有侧菜单的大部分主要活动:

public class MainActivity extends ActionBarActivity
{
    private ActionBarDrawerToggle sideMenuToggle;
    private DrawerLayout sideMenuLayout;
    private SideMenuAdapter mAdapter;

    ...

    private class DrawerItemClickListener implements ListView.OnItemClickListener 
    {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
        {
            Bundle data = new Bundle();
            data.putString("title", options.get(posit).getString("visual_name"));
            if(posit == Constants.INDEX_USERNAME)
                goToView(ViewManager.EDITPROFILE, data);
            else if((posit >= Constants.INDEX_SECTION_1) && (posit <= Constants.INDEX_SECTION_5)) 
            {
                Bundle category = options.get(posit);
                data.putString("title", category.getString("visual_name"));
                data.putString("visual_name", category.getString("visual_name"));
                data.putString("name", category.getString("name"));
                data.putInt("photo", category.getInt("photo"));
                data.putInt("ico", category.getInt("cat_ico"));
                data.putBoolean("is_root", true);
                goToView(ViewManager.CATEGORYFRAGMENT, data);
            }
        }
    }

    public Fragment goToView(ViewInfo _viewInfo, Bundle bundle)
    {
        try 
        {
            if((this != null) && !this.isFinishing())
            {
                ViewManager myVMgr = viewMgr;
                return myVMgr.show(_viewInfo, bundle, false);
            }

        } catch (IllegalStateException e) {
        }
        return null;
    }
}
对此

public class MainActivity extends AppCompatActivity
private AppCompatActivity context = null;
和内部视图管理器

private Activity context = null;
对此

public class MainActivity extends AppCompatActivity
private AppCompatActivity context = null;
现在可以编译了,但是当我在不同的部分之间切换时,新部分的数据没有加载,我一直在关注上一部分的内容

一些例子:

(一)

1.1)我选择第1节(见第1节内容)

1.2)我选择编辑配置文件(我看到编辑配置文件的内容)

1.3)我选择第3节(见第3节内容)

(二)

2.1)我选择第1节(见第1节内容)

2.2)我选择第3节(我没有看到第3节的内容,但看到第1节的内容)

通过检查,我发现问题在于,对于AppCompativeActivity,CategoryFragment的onCreate、onCreateView和onResume方法在步骤1.1、1.3和2.1中被调用,但在步骤2.2中没有调用

我错过什么了吗?我是否应该进行新的更改,以便使用AppCompatActivity正确地进行碎片事务

--编辑--

片段的setData方法如下所示:

public void setData(Bundle _newdata)
{
    data = _newdata;
}
我想把它改成这样:

public void setData(Bundle _newdata)
{
    data = _newdata;
    // Some code to force the refresh/reloading of the Fragment
}

但我不确定这是否是一种棘手的修复方法,顺便说一下,我不知道如何强制片段重新加载自身。

我的想法是为每个
片段设置标志,然后处理当前
片段
,并膨胀所需的
片段
。这就是你需要的吗?对不起,我不太了解你。在调试我的代码时,我看到在这两个示例中都调用了行“Fragment.instantiate(…)”,因此我假设它正在膨胀片段。但是在第二个示例中没有调用oncreate或onresume方法。