Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.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 使用if(id==R.id.nav_profile)从导航栏打开一个片段_Java_Android_Android Fragments_Android Studio - Fatal编程技术网

Java 使用if(id==R.id.nav_profile)从导航栏打开一个片段

Java 使用if(id==R.id.nav_profile)从导航栏打开一个片段,java,android,android-fragments,android-studio,Java,Android,Android Fragments,Android Studio,我已经创建了所有的片段和布局,上次创建应用程序时我会在eclipes中使用switch语句,但现在它会提示我使用if(id==R.id.nav_profile){ }else if(id==R.id.compension) 有人能告诉我在导航抽屉中选择一个选项并打开一个新片段的正确代码吗 public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here

我已经创建了所有的片段和布局,上次创建应用程序时我会在eclipes中使用switch语句,但现在它会提示我使用if(id==R.id.nav_profile){ }else if(id==R.id.compension)

有人能告诉我在导航抽屉中选择一个选项并打开一个新片段的正确代码吗

  public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();
    if (id == R.id.nav_profile) {
    } else if (id == R.id.MakeUp) {

    } else if (id == R.id.nav_Hairdressers) {

    } else if (id == R.id.nav_Beauticians) {

    } else if (id == R.id.nav_share) {

    } else if (id == R.id.nav_send) {

    }
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
   }
}

10-22 02:20:09.776 12351-12351/com.example.james.nixr E/FragmentManager:mloaderstarted=true

大宗报价

    10-22 02:20:09.776 12351-12351/com.example.james.nixr E/FragmentManager:   FragmentManager misc state:
     10-22 02:20:09.776 12351-12351/com.example.james.nixr E/FragmentManager:     mHost=android.support.v4.app.FragmentActivity$HostCallbacks@3f08d66d
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:     mContainer=android.support.v4.app.FragmentActivity$HostCallbacks@3f08d66d
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:     mCurState=5 mStateSaved=false mDestroyed=false
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:   View Hierarchy:
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:     com.android.internal.policy.impl.PhoneWindow$DecorView{3f15c794 V.E..... ...   0,0-1080,1920}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:       android.widget.LinearLayout{30383fe7 V.E..... ... 0,0-1080,1920}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:         android.view.ViewStub{d66b2a2 G.E..... ... 0,0-0,0 #1020436}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:         android.widget.FrameLayout{2f8d423d V.E..... ... 0,0-1080,1920}
10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:           android.support.v7.internal.widget.FitWindowsLinearLayout{181fa32 V.E..... ... 0,0-1080,1920 #7f0c0057 app:id/action_bar_root}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:              android.support.v7.internal.widget.ViewStubCompat{a739b33 G.E..... ... 0,0-0,0  #7f0c0058 app:id/action_mode_bar_stub}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:             
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:    android.support.v7.internal.widget.ContentFrameLayout{333ef383 V.E..... ... 0,0-    1080,1920 #1020002 android:id/content}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:               android.support.v4.widget.DrawerLayout{1a51c900 VFED.... ... 0,0-1080,1920 #7f0c006b app:id/drawer_layout}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:                   android.support.design.widget.CoordinatorLayout{1610c539 V.ED.... ... 0,0-  1080,1920}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:                   android.support.design.widget.AppBarLayout{451877e V.E..... ... 0,75-1080,243}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:                       android.support.v7.widget.Toolbar{377344df V.E..... ... 0,0-1080,168 #7f0c006d app:id/toolbar}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:                       android.widget.TextView{3caf7bf5 V.ED.... ... 180,43-297,124}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:                       android.widget.ImageButton{1e8a752c VFED..C. ... 0,0-168,168}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:                       android.support.v7.widget.ActionMenuView{365628f2 V.E..... ... 972,0-1080,168}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:                         android.support.v7.widget.ActionMenuPresenter$OverflowMenuButton{555b43 VFED..C. ... 0,12-108,156}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:                   
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager: android.widget.RelativeLayout{22fa9d8a V.E..... ... 0,243-1080,1920}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:                     android.support.v7.widget.AppCompatTextView{23714ffb V.ED.... ... 48,48-273,105}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:                      android.support.design.widget.FloatingActionButton{34bfb818 VFED..C. ...   864,1704-1032,1872 #7f0c006e app:id/fab}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:                 android.support.design.widget.NavigationView{1a48e271 V.E..... ... 0,0-888,1920 #7f0c006c app:id/nav_view}
10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:                     android.support.design.internal.NavigationMenuView{3a6d0856 VFED.V.. F.. 0,0-  888,1920 #7f0c0072 app:id/design_navigation_view}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:                       android.widget.LinearLayout{14043dc4 V.E..... ... 0,0-888,504 #7f0c0071   app:id/navigation_header_container}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:                        android.widget.LinearLayout{1a3834ad V.E..... ... 0,0-888,480}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:                         android.support.v7.widget.AppCompatImageView{34c953e2 V.ED.... ... 48,78-192,270 #7f0c0078 app:id/imageView}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:                         android.support.v7.widget.AppCompatTextView{1413c373 V.ED.... ... 48,270-840,375}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:                         android.support.v7.widget.AppCompatTextView{2fe97230 V.ED.... ... 48,375-592,432 #7f0c0079 app:id/textView}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:                     android.support.design.internal.NavigationMenuItemView{29327992 V.ED..C. ...   0,504-888,648}
    10-22 02:20:09.786 12351-12351/com.example.james.nixr E/FragmentManager:                       android.support.v7.widget.AppCompatCheckedTextView{4746f63 V.ED.... ... 48,0-840,144 #7f0c0073 app:id/design_menu_item_text}
    10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                       android.widget.FrameLayout{2915c760 V.E..... ... 840,0-840,144 #7f0c0075 app:id/design_menu_item_action_area}
    10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                     android.support.design.internal.NavigationMenuItemView{327a9cde V.ED..C. ..P 0,648-888,792}
    10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                       android.support.v7.widget.AppCompatCheckedTextView{bb49ebf V.ED.... ..P 48,0-  840,144 #7f0c0073 app:id/design_menu_item_text}
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                       android.widget.FrameLayout{afff98c V.E..... ..P 840,0-840,144 #7f0c0075 app:id/design_menu_item_action_area}
    10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                     android.support.design.internal.NavigationMenuItemView{158fa8ea V.ED..C. ... 0,792-888,936}
    10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                       android.support.v7.widget.AppCompatCheckedTextView{29e67db V.ED.... ... 48,0-840,144 #7f0c0073 app:id/design_menu_item_text}
    10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                       android.widget.FrameLayout{f792278 V.E..... ... 840,0-840,144 #7f0c0075 app:id/design_menu_item_action_area}
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                     android.support.design.internal.NavigationMenuItemView{325c209a V.ED..C. ... 0,936-888,1080}
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                       android.support.v7.widget.AppCompatCheckedTextView{1444fdcb V.ED.... ... 48,0-840,144 #7f0c0073 app:id/design_menu_item_text}
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                       android.widget.FrameLayout{3cb619a8 V.E..... ... 840,0-840,144 #7f0c0075 app:id/design_menu_item_action_area}
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                     android.support.design.internal.NavigationMenuItemView{124bac66 V.ED..C. ... 0,1080-888,1224}
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                       android.support.v7.widget.AppCompatCheckedTextView{15a3aba7 V.ED.... ... 48,0-840,144 #7f0c0073 app:id/design_menu_item_text}
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                       
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager: android.widget.FrameLayout{3f272854 V.E..... ... 840,0-840,144 #7f0c0075 app:id/design_menu_item_action_area}
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                     android.widget.FrameLayout{24b18d8d V.E..... ... 0,1224-888,1251}
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                       android.view.View{c86b42 V.ED.... ... 0,24-888,27}
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                     android.support.v7.widget.AppCompatTextView{2b67589 V.ED.... ... 0,1251-888,1395}
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                     android.support.design.internal.NavigationMenuItemView{3dbca5b5 V.ED..C. ... 0,1395-888,1539}
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                       android.support.v7.widget.AppCompatCheckedTextView{22cde44a V.ED.... ... 48,0-840,144 #7f0c0073 app:id/design_menu_item_text}
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                       android.widget.FrameLayout{2874efbb V.E..... ... 840,0-840,144 #7f0c0075 app:id/design_menu_item_action_area}
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                     android.support.design.internal.NavigationMenuItemView{2e5ee831 V.ED..C. ... 0,1539-888,1683}
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                       
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager: android.support.v7.widget.AppCompatCheckedTextView{300dfb16 V.ED.... ... 48,0-840,144 #7f0c0073 app:id/design_menu_item_text}
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/FragmentManager:                       android.widget.FrameLayout{178cc97 V.E..... ... 840,0-840,144 #7f0c0075 app:id/design_menu_item_action_area}
10-22 02:20:09.796 12351-12351/com.example.james.nixr D/AndroidRuntime: Shutting down VM
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/AndroidRuntime: FATAL EXCEPTION: main
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/AndroidRuntime: Process: com.example.james.nixr, PID: 12351
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/AndroidRuntime: java.lang.IllegalArgumentException: No view found for id 0x7f0c0076 (com.example.james.nixr:id/makup_layout) for fragment makup{28f4e84 #0 id=0x7f0c0076}
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/AndroidRuntime:     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:896)
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/AndroidRuntime:     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1082)
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/AndroidRuntime:     at android.app.BackStackRecord.run(BackStackRecord.java:833)
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/AndroidRuntime:     at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/AndroidRuntime:     at android.app.FragmentManagerImpl$1.run(FragmentManager.java:452)
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:739)
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95)
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:145)
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5832)
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372)
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
10-22 02:20:09.796 12351-12351/com.example.james.nixr E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
    10-22 02:20:11.116 12351-12351/com.example.james.nixr I/Process: Sending signal. PID: 12351 SIG: 9

开关应该工作得很好,您对使用Fragments和FragmentManager有疑问吗?以下是使用NavigationView的一个很好的教程:

好的,从您在这个问题上留下的各种评论来看,我猜您的实际问题是,当您接到对
onNavigationItemSelected()
的调用时,如何向视图添加新片段。你会做这样的事

FragmentManager fragmentManager = getFragmentManager(); //or getSupportFragmentManager() if you're using support library
FragmentTransaction transaction = fragmentManager.beginTransaction();

MakeupFragment makeupFragment = MakeupFragment.newInstance();
transaction.add(R.id.container_that_holds_fragment, makeupFragment);
transaction.addToBackStack(null);
transaction.commit();
或者,如果一个片段已经显示,您需要替换它

HairdresserFragment hairdresserFragment = HairdresserFragment.newInstance();
transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.container_that_holds_fragment, hairdresserFragment);
transaction.addToBackStack(null);
transaction.commit();
这就是你要找的信息吗


编辑:回应以下评论… 如果出现错误
无法解析方法newInstance()
或类似错误,则表示您尚未在片段中定义此方法。确保您的片段定义了以下方法

public static YourFragment newInstance() {
    YourFragment fragment = new YourFragment();
    return fragment;
}

您的片段应该使用这个静态方法实例化自己,然后将创建的片段传递回调用它的人。一旦在片段中实现了此方法,只需调用
YourFragment fragment=YourFragment.newInstance()

为什么不能在此处使用switch语句?你只需要做
切换(id)…案例R.id.化妆:
,等等。我已经试过很多次了,这是我第一次使用导航抽屉,我感觉它的工作方式与导航标签不同。那么你的问题是什么?哪一部分不起作用?一个
switch
语句在那里可以正常工作。如果不是,那么你没有正确实现这个开关。我只使用了int-position-switch语句,它给了我所有的排序或错误。我输入了这个,中间有我丢失的代码吗?switch(item.getItemId()){case R.id.nav_profile:return true;case R.id.nav_hairdrerssers:return true;case R.id.化妆:return true;default:return super.onOptionsItemSelected(item);}如果我是从零开始的话,这是一篇非常好的文章,我使用了android导航抽屉模板,我尝试了那个教程中的切换,但它无法识别片段标签,老实说,我不确定这些标签到底是如何工作的,我整天都在读关于它们的文章,试图理解它们。“切换”或“如果其他”也会有同样的行为,那么,你的问题是它不会进入这些陈述吗?你能告诉我其他细节吗?或者你的代码在哪里使用FragmentManager?我不确定if-else里面有什么代码来打开新的片段,这是我的问题,我猜我需要的不仅仅是;if(id==R.id.nav_profile){return true;}else if(id==R.id.compose){return true;我已经输入了您的第一段代码,我得到了一个错误,makup makupnew=makup.newInstance();错误是什么?记住
newInstance()
是一个静态方法。因此,您对类本身而不是对象调用它。当然,您的片段中也必须定义一个静态newInstance方法。请告诉我错误说明,我将尝试提供帮助。这是错误“error:(91,32)error:找不到symbol method newInstance()”我有代码在里面“public boolean onNavigationItemSelected(MenuItem item)”这是我在片段中的实例“创建视图的公共视图(LayoutFlater inflater,ViewGroup container,Bundle savedInstanceState){rootview=inflater.inflate(R.layout.makup_layout,container,false);返回rootview;“请参阅上面我的编辑。您的片段中没有定义
newInstance()
FragmentManager fragmentManager = getFragmentManager(); //or getSupportFragmentManager() if you're using support library
FragmentTransaction transaction = fragmentManager.beginTransaction();

MakeupFragment makeupFragment = MakeupFragment.newInstance();
transaction.add(R.id.container_that_holds_fragment, makeupFragment);
transaction.addToBackStack(null);
transaction.commit();
HairdresserFragment hairdresserFragment = HairdresserFragment.newInstance();
transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.container_that_holds_fragment, hairdresserFragment);
transaction.addToBackStack(null);
transaction.commit();
public static YourFragment newInstance() {
    YourFragment fragment = new YourFragment();
    return fragment;
}