导航Drawer-显示家庭片段作为默认 [英] Navigation Drawer- Displaying home fragment as default
问题描述
我重视导航抽屉我的应用程序主活动。
抽屉式导航栏有4个选项,将用户导航到4种不同的片段F1,F2,F3和F4。
我创建了一个主页片段
FH。
我不加入FH中的导航抽屉一个选择即可。
片段FH填充数据制作HTTP调用。
每当用户选择的F1,F2,F3或F4;相应的片段需要显示回来。
到这里一切工作正常。
然而,每当用户preSS返回按钮,然后FH应显示。 IE浏览器。 content_frame应该包含FH。
我无法做到这一点的部分。
现在,每当用户preSS后退按钮,默认视图是空白的。
另外,由于FH使HTTP调用来填充数据,从而FH已添加到堆栈的需要要显示
下面是我的实现:
MainActivity-的OnCreate
mDrawerLayout.closeDrawer(mDrawerList);
setUpHomeFragment();
下面是我正在努力应付片段,在导航抽屉单击的项目...
私人无效showFrg(片段片段){ FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.addToBackStack(NULL);
fragmentTransaction.replace(R.id.content_frame,片段).commit();
}
该setUpHomeFragment功能,也就是所谓的只是一次活动上OnCreate中()
私人无效setUpHomeFragment(){
mLandingPageFragment =新ReadyMyOrderCollections();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction英尺= fragmentManager.beginTransaction();
ft.replace(R.id.content_frame,mLandingPageFragment);
ft.addToBackStack(NULL);
ft.commit();
}
MainActivity XML布局:
< LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:方向=垂直> <包括布局=@布局/工具栏/> < android.support.v4.widget.DrawerLayout
的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:ID =@ + ID / drawer_layout
机器人:layout_width =match_parent
机器人:layout_height =match_parent> <的FrameLayout
机器人:ID =@ + ID / content_frame
机器人:layout_width =match_parent
机器人:layout_height =match_parent/> <包括
机器人:layout_width =@扪/ drawer_width
机器人:layout_height =match_parent
机器人:layout_gravity =开始
布局=@布局/ list_view/>
< /android.support.v4.widget.DrawerLayout>< / LinearLayout中>
我的工作围绕这是
私人诠释getFragmentCount(){
返回getSupportFragmentManager()getBackStackEntryCount()。
}
在你的活动
@覆盖
公共无效onBack pressed(){
如果(getFragmentCount()大于0){
。getSupportFragmentManager()popBackStackImmediate();
}其他{
super.onBack pressed();
}
}
I have attached navigation drawer to main Activity
of my application.
Navigation drawer have 4 options that will navigate user to 4 different fragments f1, f2, f3 and f4.
I have created a home page Fragment
fh.
I am not adding fh as a choices in Navigation Drawer.
Fragment fh populates data making http call.
Whenever user selects f1, f2, f3 or f4; the respective fragments need to be shown back.
Till here everything is working fine.
However, whenever user press back button, then fh should be displayed. ie. content_frame should contain fh. I am unable to do this portion.
Right now, whenever user press back button, the default view is blank.
Also, since fh makes a http call to populate data, so fh that was added to stack needs to be shown.
Here is my implementation:
MainActivity- OnCreate
mDrawerLayout.closeDrawer(mDrawerList);
setUpHomeFragment();
Here is how I am managing fragment, on navigation drawer item clicked...
private void showFrg(Fragment fragment){
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.addToBackStack(null);
fragmentTransaction.replace(R.id.content_frame, fragment).commit();
}
The setUpHomeFragment Function, that is called just once on activity oncreate()
private void setUpHomeFragment(){
mLandingPageFragment=new ReadyMyOrderCollections();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.content_frame, mLandingPageFragment);
ft.addToBackStack(null);
ft.commit();
}
MainActivity XML Layout:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<include layout="@layout/toolbar" />
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<include
android:layout_width="@dimen/drawer_width"
android:layout_height="match_parent"
android:layout_gravity="start"
layout="@layout/list_view" />
</android.support.v4.widget.DrawerLayout>
</LinearLayout>
My work around for this is
private int getFragmentCount() {
return getSupportFragmentManager().getBackStackEntryCount();
}
In your Activity
@Override
public void onBackPressed() {
if(getFragmentCount()>0) {
getSupportFragmentManager().popBackStackImmediate();
}else{
super.onBackPressed();
}
}
这篇关于导航Drawer-显示家庭片段作为默认的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!