我希望能够使用导航抽屉,并根据导航中的选择在不同片段之间进行更改。
我正在使用Android Studio,基本上我所做的是这样的:
然后我更改了onNavigationDrawerItemSelected方法中的一些代码。
@Override
public void onNavigationDrawerItemSelected(int position) {
// update the main content by replacing fragments
FragmentManager fragmentManager = getSupportFragmentManager();
Fragment fragment = new BlankFragment();
fragmentManager.beginTransaction()
.replace(R.id.container, fragment)
.commit();
}
我的程序崩溃了,给了我很多我不理解的错误。我做错了什么?
4168-4168/com.dev.kim.mytestapplication E/AndroidRuntime﹕ FATAL
EXCEPTION: main
Process: com.dev.kim.mytestapplication, PID: 4168
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dev.kim.mytestapplication/com.dev.kim.mytestapplication.MainActivity}:
java.lang.ClassCastException:
com.dev.kim.mytestapplication.MainActivity@e71881c must implement
OnFragmentInteractionListener
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.ClassCastException: com.dev.kim.mytestapplication.MainActivity@e71881c must implement
OnFragmentInteractionListener
at com.dev.kim.mytestapplication.BlankFragment.onAttach(BlankFragment.java:83)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:903)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:548)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1220)
at android.app.Activity.performStart(Activity.java:5949)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
使用向导创建片段时,您选中了一个框来创建侦听器。
所以你得到了这个错误:
must implement
OnFragmentInteractionListener
如果你不想使用监听器,那么在“onAttach”中,你可以删除这段代码:
try {
mListener = (OnFragmentInteractionListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnFragmentInteractionListener");
}
或者在您的活动中,您可以实现侦听器。
我在我的应用程序中使用抽屉菜单,并实现了在NavigationDrawer片段类中切换片段的逻辑。我最近读到片段切换只能从托管活动中发生。 有一个从NavigationDrawerFragment调用的接口,用于通知导航抽屉列表视图中所选位置的MainActivity。 我感到困惑的是,在Mainactive中有一个静态片段,它是使用NavigationDrawer片段中接口提供的位置调用的。 P
我有一个带有导航抽屉的应用程序,它为每个菜单项使用片段。 每次单击一个项目时,我都会替换当前片段。 问题是,在用户单击后显示新片段需要很长时间,并且它会被卡住。加载时间最长的片段是一个片段,其中还包含子片段的选项卡(一个片段包含一个RecyclerView)<有什么方法可以加快碎片的装载速度吗?(如果可能的话,可能会提前初始化它们?) 这是我的代码: HalachaFragment。cs(包含选项
我不是Android方面的专家,但对片段非常感兴趣。非常感谢您的帮助! 我在我的应用程序中实现了一个导航抽屉。有一个基本抽屉活动和一些片段,用户可以从抽屉菜单中切换。如果我想转移到另一个片段,没有问题,但当我使用意图开始一个新的活动时,它是有效的。如果你看一下我下面的代码,你会发现我使用了两个独立的菜单:一个用于操作栏图标(购物车和搜索),意图在其中完美工作,另一个用于导航抽屉在片段之间跳转。有没
是否可以在android中使用导航抽屉,但我不想更新片段,而是想在活动之间切换,作为我在应用程序中的导航方式。
我已经设置了一个左右两侧的导航抽屉。除了一件事,一切都很好。 我希望我的另一个动作栏项目切换右边的抽屉菜单。正常的左边动作栏切换效果很好。谷歌Android应用程序通知面板是我希望动作模仿的。 下面是我用来设置右侧切换的代码(现在它在单击时强制关闭): 如果有人知道怎么做,如果你能让我知道就太好了! 谢谢
我的要求如下图所示,我的导航抽屉应该从右侧打开。我已经实现了这一点。我的导航抽屉从右向左打开。但问题是切换图标总是在左侧。如何将切换图标设置在右侧? 我查过以下SO问题,但没有一个有用: 将导航抽屉中的切换按钮图像图标从右改为左