Android ActionBarCompat-具有多个片段的导航抽屉
我是ActionBarCompat库的新手。我想开发一个包含多个片段的应用程序。这是我想做的 1.当用户从导航抽屉中选择片段时,如何打开该片段 2.如何设置显示启动布局的启动片段(例如,在Google plus应用程序中,首先显示新闻提要。当我们从侧菜单中选择profile项时,然后隐藏侧菜单/导航抽屉并显示配置文件布局) 目前我有副菜单和一个片段。Android ActionBarCompat-具有多个片段的导航抽屉,android,android-fragments,android-actionbar,Android,Android Fragments,Android Actionbar,我是ActionBarCompat库的新手。我想开发一个包含多个片段的应用程序。这是我想做的 1.当用户从导航抽屉中选择片段时,如何打开该片段 2.如何设置显示启动布局的启动片段(例如,在Google plus应用程序中,首先显示新闻提要。当我们从侧菜单中选择profile项时,然后隐藏侧菜单/导航抽屉并显示配置文件布局) 目前我有副菜单和一个片段。 这是我过去一直遵循的教程-我假设旁边的菜单是指导航抽屉。你可以在下面的链接中找到答案 读 片段由活动托管。因此,在活动布局中需要一个容器 &l
这是我过去一直遵循的教程-我假设旁边的菜单是指导航抽屉。你可以在下面的链接中找到答案 读 片段由活动托管。因此,在活动布局中需要一个容器
<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 // container to which you add or replace fragments
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<ListView
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#111"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"/>
</android.support.v4.widget.DrawerLayout>
基于位置单击listitem时
FragmentTransaction fragTran = getSupportFragmentManager()
.beginTransaction();
Fragment fragment3= new Fragment3();
fragTran.replace(R.id.content_frame, fragment3);
fragTran.commit();
我猜你们在菜单旁边指的是导航抽屉。你可以在下面的链接中找到答案 读 片段由活动托管。因此,在活动布局中需要一个容器
<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 // container to which you add or replace fragments
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<ListView
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#111"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"/>
</android.support.v4.widget.DrawerLayout>
基于位置单击listitem时
FragmentTransaction fragTran = getSupportFragmentManager()
.beginTransaction();
Fragment fragment3= new Fragment3();
fragTran.replace(R.id.content_frame, fragment3);
fragTran.commit();
如果您要使用滑出菜单,我建议您使用它,我在我的应用程序中使用它,它允许您在滑出菜单中放置任何您想要的内容,菜单只是一个框架布局,您可以在其中放置任何您想要的内容(Listview、GridView,甚至只是一张图片)如果您要使用滑出菜单,我建议您使用它,我在我的应用程序中使用它,它允许您在滑出菜单中放置任何您想要的内容,该菜单只是一个框架布局,您可以在其中放置任何您想要的内容(Listview、GridView,甚至只是一张图片) 您好,请检查此代码 公共类MainActivity扩展了ActionBarActivity实现 麦克利克监听器{
DrawerLayout options_drawer;
FrameLayout main_frame;
ListView slider_list;
ActionBar action;
ActionBarDrawerToggle toggler;
BluetoothAdapter blue_adapter;
String options[] = { "Chat", "Device List", "Settings", "Emojis",
"Terms&Conditions" };
Fragment f;
private static final int REQUEST_ENABLE_BT = 3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.activity_main);
// setSupportProgressBarIndeterminateVisibility(true);
action = getSupportActionBar();
action.setHomeButtonEnabled(true);
action.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
options_drawer = (DrawerLayout) findViewById(R.id.drawer);
main_frame = (FrameLayout) findViewById(R.id.main_frame);
slider_list = (ListView) findViewById(R.id.slider_list);
blue_adapter = BluetoothAdapter.getDefaultAdapter();
if (blue_adapter == null) {
Toast.makeText(getApplicationContext(),
"NO BLUETOOTH DEVICE FOUND", Toast.LENGTH_LONG).show();
finish();
}
ArrayAdapter<String> al = new ArrayAdapter<String>(
getApplicationContext(), R.layout.option_text, options);
slider_list.setAdapter(al);
slider_list.setOnItemClickListener(this);
/*
* toggler=new ActionBarDrawerToggle(MainActivity.this,
* options_drawer,R.
* drawable.ic_launcher,R.string.app_name,R.string.app_name){
*
* @Override public void onDrawerOpened(View drawerView) { // TODO
* Auto-generated method stub super.onDrawerOpened(drawerView);
* options_drawer.openDrawer(slider_list); }
*
* };
*/
// options_drawer.setDrawerListener(toggler);
if (savedInstanceState == null) {
f = new chat_fragment();
fragmentTransition(f);
}
}
@Override
public void onStart() {
super.onStart();
// If BT is not on, request that it be enabled.
// setupChat() will then be called during onActivityResult
if (!blue_adapter.isEnabled()) {
Intent enableIntent = new Intent(
BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
// Otherwise, setup the chat session
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
if (item.getItemId() == android.R.id.home) {
// If the drawer is open, close it; vice versa
if (options_drawer.isDrawerOpen(slider_list)) {
options_drawer.closeDrawer(slider_list);
} else {
options_drawer.openDrawer(slider_list);
}
}
return super.onOptionsItemSelected(item);
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
// TODO Auto-generated method stub
options_drawer.closeDrawer(slider_list);
switch (position) {
case 0:
f = new chat_fragment();
fragmentTransition(f);
break;
case 1:
f = new device_list_fragment();
fragmentTransition(f);
break;
}
}
private void fragmentTransition(Fragment f2) {
// TODO Auto-generated method stub
FragmentTransaction fx = getSupportFragmentManager().beginTransaction();
fx.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fx.replace(R.id.main_frame, f2).commit();
}
抽屉布局选项\u抽屉;
框架布局主框架;
列表视图滑块(u列表),;
行动吧行动;
ActionBarDrawerToggle触发器;
蓝牙适配器;
字符串选项[]={“聊天”、“设备列表”、“设置”、“表情”,
“条款与条件”};
片段f;
私有静态最终整数请求_ENABLE_BT=3;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//supportRequestWindowFeature(窗口功能\u不确定\u进度);
setContentView(R.layout.activity_main);
//SetSupportProgressBarInDeterminateVibility(真);
action=getSupportActionBar();
action.setHomeButtonEnabled(true);
action.setNavigationMode(ActionBar.NAVIGATION_模式_标准);
选项_drawer=(DrawerLayout)findviewbyd(R.id.drawer);
main_frame=(FrameLayout)findviewbyd(R.id.main_frame);
slider\u list=(ListView)findViewById(R.id.slider\u list);
blue_adapter=BluetoothAdapter.getDefaultAdapter();
if(蓝色_适配器==null){
Toast.makeText(getApplicationContext(),
“未找到蓝牙设备”,Toast.LENGTH_LONG.show();
完成();
}
ArrayAdapter al=新的ArrayAdapter(
getApplicationContext(),R.layout.option_text,options);
滑块列表。设置适配器(al);
slider_list.setOnItemClickListener(此);
/*
*toggler=new ActionBarDrawerToggle(MainActivity.this,
*右抽屉。
*drawable.ic_启动器,R.string.app_名称,R.string.app_名称){
*
*@Override public void onDrawerOpened(视图抽屉视图){//TODO
*自动生成方法存根super.onDrawerOpened(抽屉视图);
*选项_drawer.openDrawer(滑块列表);}
*
* };
*/
//选项_drawer.setDrawerListener(切换器);
如果(savedInstanceState==null){
f=新聊天_片段();
碎片化转变(f);
}
}
@凌驾
public void onStart(){
super.onStart();
//如果BT未打开,请请求启用它。
//然后在onActivityResult期间调用setupChat()
如果(!blue_adapter.isEnabled()){
意图启用意图=新意图(
BluetoothAdapter.ACTION\u REQUEST\u ENABLE);
startActivityForResult(启用意图、请求和启用);
//否则,请设置聊天会话
}
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//TODO自动生成的方法存根
if(item.getItemId()==android.R.id.home){
//如果抽屉打开,请将其关闭;反之亦然
if(选项\抽屉isDrawerOpen(滑块\列表)){
选项\u drawer.closeDrawer(滑块\u列表);
}否则{
选项\u drawer.openDrawer(滑块\u列表);
}
}
返回super.onOptionsItemSelected(项目);
}
@凌驾
公共单击(适配器视图arg0,视图arg1,内部位置,
长arg3){
//TODO自动生成的方法存根
选项\u drawer.closeDrawer(滑块\u列表);
开关(位置){
案例0:
f=新聊天_片段();
碎片化转变(f);
打破
案例1:
f=新设备\列表\片段();
碎片化转变(f);
打破
}
}
私有void片段转换(片段f2){
//TODO自动生成的方法存根
FragmentTransaction fx=getSupportFragmentManager().beginTransaction();
fx.setTransition(FragmentTransaction.Transition\u FRAGMENT\u OPEN);
fx.replace(R.id.main_frame,f2).commit();
}
}
并且XML文件是
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<FrameLayout
android:id="@+id/main_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
<ListView
android:id="@+id/slider_list"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#ffffff" >
</ListView>
您好,请检查此代码
公共类MainActivity扩展了ActionBarActivity实现
麦克利克监听器{
DrawerLayout options_drawer;
FrameLayout main_frame;
ListView slider_list;
ActionBar action;
ActionBarDrawerToggle toggler;
BluetoothAdapter blue_adapter;
String options[] = { "Chat", "Device List", "Settings", "Emojis",
"Terms&Conditions" };
Fragment f;
private static final int REQUEST_ENABLE_BT = 3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.activity_main);
// setSupportProgressBarIndeterminateVisibility(true);
action = getSupportActionBar();
action.setHomeButtonEnabled(true);
action.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
options_drawer = (DrawerLayout) findViewById(R.id.drawer);
main_frame = (FrameLayout) findViewById(R.id.main_frame);
slider_list = (ListView) findViewById(R.id.slider_list);
blue_adapter = BluetoothAdapter.getDefaultAdapter();
if (blue_adapter == null) {
Toast.makeText(getApplicationContext(),
"NO BLUETOOTH DEVICE FOUND", Toast.LENGTH_LONG).show();
finish();
}
ArrayAdapter<String> al = new ArrayAdapter<String>(
getApplicationContext(), R.layout.option_text, options);
slider_list.setAdapter(al);
slider_list.setOnItemClickListener(this);
/*
* toggler=new ActionBarDrawerToggle(MainActivity.this,
* options_drawer,R.
* drawable.ic_launcher,R.string.app_name,R.string.app_name){
*
* @Override public void onDrawerOpened(View drawerView) { // TODO
* Auto-generated method stub super.onDrawerOpened(drawerView);
* options_drawer.openDrawer(slider_list); }
*
* };
*/
// options_drawer.setDrawerListener(toggler);
if (savedInstanceState == null) {
f = new chat_fragment();
fragmentTransition(f);
}
}
@Override
public void onStart() {
super.onStart();
// If BT is not on, request that it be enabled.
// setupChat() will then be called during onActivityResult
if (!blue_adapter.isEnabled()) {
Intent enableIntent = new Intent(
BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
// Otherwise, setup the chat session
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
if (item.getItemId() == android.R.id.home) {
// If the drawer is open, close it; vice versa
if (options_drawer.isDrawerOpen(slider_list)) {
options_drawer.closeDrawer(slider_list);
} else {
options_drawer.openDrawer(slider_list);
}
}
return super.onOptionsItemSelected(item);
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
// TODO Auto-generated method stub
options_drawer.closeDrawer(slider_list);
switch (position) {
case 0:
f = new chat_fragment();
fragmentTransition(f);
break;
case 1:
f = new device_list_fragment();
fragmentTransition(f);
break;
}
}
private void fragmentTransition(Fragment f2) {
// TODO Auto-generated method stub
FragmentTransaction fx = getSupportFragmentManager().beginTransaction();
fx.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fx.replace(R.id.main_frame, f2).commit();
}
抽屉布局选项\u抽屉;
框架布局主框架;
列表视图滑块(u列表),;
行动吧行动;
ActionBarDrawerToggle触发器;
蓝牙适配器;
字符串选项[]={“聊天”、“设备列表”、“设置”、“表情”,
“条款与条件”};
片段f;
私有静态最终整数请求_ENABLE_BT=3;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//supportRequestWindowFeature(Window.FEATURE\u不确定\u程序