Android 替换AppCompative活动中的片段
我有一个带SlideMenu的Android应用程序 这是我拥有侧菜单的大部分主要活动: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
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方法。