[英]How to attach an onclick listener to Android Studio's navigation drawer activity?
我试图在具有导航抽屉的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内置导航抽屉活动的教程。
另外,是否可以在我的所有活动中使用此导航抽屉? 每次创建新活动时都需要创建一个新的导航抽屉片段吗?
提前致谢!
拥有导航抽屉的想法是使用片段。 每当您单击导航抽屉中的项目时,启动新活动并不是非常有效。
在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()起作用,请注意,所有框架均必须调用该方法以将其标题传递给主要活动。
有关更多信息,请参见此链接。
为了在导航抽屉上放置点击侦听器,只需在要更改标题栏的代码行下方(即在开关盒中)放置一个意图即可,例如
case 1:
mTitle = getString(R.string.login);
Intent transfer = new Intent(HomeFragment.this,NextActivity.class);
startActivity(transfer);
这将为您做到。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.