Java 如何从导航抽屉重新加载/刷新片段
我有一个使用导航抽屉的android应用程序。 我遵循了这个教程 并且能够在我的MainActivity.java上使用此功能 我在MainActivity中有以下代码来设置我要显示的片段:Java 如何从导航抽屉重新加载/刷新片段,java,android,android-fragments,navigation-drawer,Java,Android,Android Fragments,Navigation Drawer,我有一个使用导航抽屉的android应用程序。 我遵循了这个教程 并且能够在我的MainActivity.java上使用此功能 我在MainActivity中有以下代码来设置我要显示的片段: public void displayView(int position) throws Exception { // update the main content by replacing fragments Fragment fragment = null;
public void displayView(int position) throws Exception {
// update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 0:
fragment = new DashboardFragment();
break;
case 1:
fragment = new EventsFragment();
break;
default:
break;
}
if (fragment != null) {
android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.frame_container, fragment);
fragmentTransaction.commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
现在,在我的EventsFragment.java中,我有以下代码来重新加载片段:
@Override
public void onRefreshStarted(View view) {
MainActivity mainAct = new MainActivity();
try {
// reload and set the displayValue position to 1 = EventsFragment()
mainAct.displayView(1);
} catch (Exception e) {
e.printStackTrace();
}
}
我得到了这个错误:
java.lang.IllegalStateException: Activity has been destroyed.
我相信我在这部分代码中遇到了这个错误:
fragmentTransaction.commit()
如果要引用父级活动
,请使用Fragment.getActivity()
@Override
public void onRefreshStarted(View view) {
Activity mainAct = getActivity();
// Make sure the host Activity is infact an instance of MainActivity, and has displayView()
if(mainAct instanceof MainActivity) {
mainAct.displayView(1);
}
}