简体   繁体   English

带活动而不是片段的导航抽屉

[英]Navigation drawer with activities instead of fragments

What i have is left navigation menu that i have made using navigation drawer and it works just fine with fragments , and i have five buttons each one open a fragment but now i want each case to open an activity instead of fragment , and i have tried to do it using intent but it didn't work !! 我所剩下的是我使用导航抽屉制作的导航菜单,它可以很好地处理片段,并且我有五个按钮,每个按钮可以打开一个片段,但是现在我希望每种情况都可以打开一个活动而不是片段,我已经尝试过用意图做到这一点,但没有用! here is my code : 这是我的代码:

private void displayView(int position) {
        // update the main content by replacing fragments
        android.app.Fragment fragment = null;
        switch (position) {
        case 0:
            //fragment = new HomeFragment();
//          Intent i=new Intent(MainActivity.this,MainActivity.class);
//          startActivity(i);
            break;
        case 1:
            //fragment = new FindPeopleFragment();
            break;
        case 2:
            //fragment = new PhotosFragment();
            break;
        case 3:
            //fragment = new CommunityFragment();
            break;
        case 4:
            //fragment = new PagesFragment();
            break;
        case 5:
            //fragment = new WhatsHotFragment();
            break;

        default:
            break;
        }

        if (fragment != null) {
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.frame_container, fragment).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");
        }
    }

So what shall i change in this code so it can open an activity instead of fragment??? 那么我应该在这段代码中进行哪些更改,以便它可以打开一个活动而不是片段? can anyone help me? 谁能帮我?

You need to change your function to load a class Fragment in some case and in other cases a class Activity 您需要更改函数以在某些情况下加载类Fragment,而在其他情况下加载Activity

case 0:
activity = new MyActivity();
fragment = null;
break;
case 1:
fragment = new MyFragment();
activity = null;
break;  

if (fragment != null) {
  FragmentManager fragmentManager = getFragmentManager();
  fragmentManager.beginTransaction().replace(R.id.frame_container, (android.app.Fragment) fragment).commit();
  setTitle(menutitles[position]);
  mDrawerLayout.closeDrawer(mDrawerList);
}else {
  if(activity != null) {
     Intent i1 = new Intent(MainActivity.this, activity.getClass());
     i1.putExtra(EXTRA_MESSAGE, position);
     startActivity(i1);  
     setTitle(menutitles[position]);
     mDrawerLayout.closeDrawer(mDrawerList);
  }
}

Could you please post the Error from Logcat: 您能否从Logcat发布错误:

What i would check first is: 我首先要检查的是:

  • Are the Activities declared in the Manifest.xml as Activies? 活动是否在Manifest.xml中声明为活动?
  • Secondly check if you calling Activities with an Intent, and not Fragments 其次,检查您是否有意调用“活动”而不是“片段”

This is how you start Activities correctly. 这是您正确启动“活动”的方式。

Intent intent = new Intent(mActivity, class1); // class1 The class to open
startActivity(intent);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM