Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.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
Java 如何从导航抽屉重新加载/刷新片段_Java_Android_Android Fragments_Navigation Drawer - Fatal编程技术网

Java 如何从导航抽屉重新加载/刷新片段

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;

我有一个使用导航抽屉的android应用程序。 我遵循了这个教程

并且能够在我的MainActivity.java上使用此功能

我在MainActivity中有以下代码来设置我要显示的片段:

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);
    }
}