我试图在Android studio中创建一个带有导航抽屉的应用程序。
我正在使用Android Studio(测试版)0.8.14。在此版本中,有一个导航抽屉活动。我能够使用这段代码和我的字符串文件中的相应值
为我的导航抽屉菜单设置标签public void onSectionAttached(int number) {
switch (number) {
case 1:
mTitle = getString(R.string.login);
break;
case 2:
mTitle = getString(R.string.sign_up);
break;
case 3:
mTitle = getString(R.string.view_map);
break;
case 4:
mTitle = getString(R.string.about);
break;
case 5:
mTitle = getString(R.string.version);
}
}
它看起来非常好,但我无法弄清楚如何为每个项添加onClickListeners。
我还在NavigationDrawerFragment.java中添加了这个(由Android Studio自动创建):
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mDrawerListView = (ListView) inflater.inflate(
R.layout.fragment_navigation_drawer, container, false);
mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
selectItem(position);
}
});
mDrawerListView.setAdapter(new ArrayAdapter<String>(
getActionBar().getThemedContext(),
android.R.layout.simple_list_item_activated_1,
android.R.id.text1,
new String[]{
getString(R.string.login),
getString(R.string.sign_up),
getString(R.string.view_map),
getString(R.string.about),
getString(R.string.version),
}));
mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
return mDrawerListView;
}
我想为每个列表项启动一个不同的活动,但我无法理解如何以及遗憾的是我似乎无法找到使用Android Studio内置导航抽屉活动的教程。
此外,是否可以在我的所有活动中使用此导航栏?每次创建新活动时是否需要创建新的导航抽屉片段?
提前致谢!
答案 0 :(得分:0)
拥有导航抽屉的想法是使用片段。每当您单击导航抽屉中的项目时,启动新活动都不会非常有效。
在selectItem(position)
方法中,您可以执行一些代码,为导航抽屉中的列表项创建新片段。每个导航项应该是一个不同的片段,然后只需使用片段事务将其添加到主活动的容器视图中。
作为该方法的简单示例:
private void selectItem(int position) {
FragmentManager fragmentManager = getFragmentManager();
switch(position) {
//fragment for position 0
case 0:
fragmentManager.beginTransaction()
.replace(R.id.container, new Fragment0())
.commit();
break;
//fragment for postion 1
case 1:
fragmentManager.beginTransaction()
.replace(R.id.container, new Fragment1())
.commit();
break;
//fragment for position 2
case 2:
fragmentManager.beginTransaction()
.replace(R.id.container, new Fragment2())
.commit();
break;
default:
break;
}
}
这可能不是您想要的,但它是您尝试完成的选项。
作为onSectionAttached()工作的注释,您的所有片段都必须调用它以将其标题传递给主要活动。
有关详细信息,请参阅this链接。
答案 1 :(得分:0)
为了在导航抽屉上放置onclicklistener,只需在您要更改标题栏的代码行下方放置一个intent,即在switch case block中 例如
case 1:
mTitle = getString(R.string.login);
Intent transfer = new Intent(HomeFragment.this,NextActivity.class);
startActivity(transfer);
这将为你做。