我想为我的新Android应用程序制作DrawerLayout。但我需要在同一活动中使用活动。
我该如何处理它,我的代码如下:
my_activity.java; (有很多菜单列表的代码,刷卡vs,但我只是添加了我的问题行)
switch (position) {
case 0:
fragment = new HomeFragment();
break;
这是我的问题。我想在这一步运行活动文件,但我不能。我想展示一些活动文件案例:0,我尝试了我所知道的一切但我无法做到。 实际上我对这个片段有点困惑&活动问题。
感谢您的帮助。
答案 0 :(得分:0)
首先,您的活动xml(您想要使用导航抽屉的那个)必须包含<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android">
作为其根元素和列表视图(最后在xml层次结构中)
<ListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@android:color/background_light"
android:choiceMode="singleChoice" />
在您的活动中,您应该:
DrawerLayout drawerLayout;
ListView drawerList;
ActionBarDrawerToggle drawerToggle;
...
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
drawerToggle = new ActionBarDrawerToggle(this, drawerLayout,
R.drawable.ic_drawer, R.string.Open, R.string.Close);
drawerLayout.setDrawerListener(drawerToggle);
drawerList.setAdapter(new youradaptertype());
drawerList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
switch (arg2) {
case 0:
Intent l = new Intent(MainActivity.this,
FriendActivity.class);
startActivity(l);
break;
case 1:
Intent j = new Intent(MainActivity.this, RequestActivity.class);
startActivity(j);
break;
case 2:
Intent i = new Intent(MainActivity.this,
SettingsActivity.class);
startActivity(i);
break;
...
}
drawerLayout.closeDrawer(drawerList);
}
});
在每个“case”语句中,要启动活动,您应该使用Intent并开始一个新活动。如果您只是想在“案例”中更改片段(而不是开始新的活动),您应该这样:
getSupportFragmentManager().beginTransaction()
.replace(YOUR_ROOT_VIEW_ID, new fragmenttobeinstantiated())
//optinal
.addToBackStack(null).commit();
看看它是否有帮助!