我浏览了一下网站,我找不到问题的答案,我试图让我的导航抽屉在活动之间切换而不是片段。我已经尝试过switch语句,所有这些都会导致应用程序崩溃,我不知道如何获取抽屉的单独元素以便设置它们,这样如果按下它,它将转到此页面,如果其他被按下它将转到此页面等。
这是我的代码,
package com.example.ColeraineTown;
imports...
public class HomeScreen extends Activity {
private String[] drawerListViewItems;
private DrawerLayout drawerLayout;
private ListView drawerListView;
private ActionBarDrawerToggle actionBarDrawerToggle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// get list items from strings.xml
drawerListViewItems = getResources().getStringArray(R.array.items);
// get ListView defined in activity_main.xml
drawerListView = (ListView) findViewById(R.id.left_drawer);
// Set the adapter for the list view
drawerListView.setAdapter(new ArrayAdapter<String>(this,
R.layout.drawer_listview_item, drawerListViewItems));
// 2. App Icon
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
// 2.1 create ActionBarDrawerToggle
actionBarDrawerToggle = new ActionBarDrawerToggle(
this, /* host Activity */
drawerLayout, /* DrawerLayout object */
R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */
R.string.drawer_open, /* "open drawer" description */
R.string.drawer_close /* "close drawer" description */
);
// 2.2 Set actionBarDrawerToggle as the DrawerListener
drawerLayout.setDrawerListener(actionBarDrawerToggle);
// 2.3 enable and show "up" arrow
getActionBar().setDisplayHomeAsUpEnabled(true);
drawerListView.setOnItemClickListener(new DrawerItemClickListener());
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
actionBarDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
actionBarDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// call ActionBarDrawerToggle.onOptionsItemSelected(), if it returns true
// then it has handled the app icon touch event
if (actionBarDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
drawerLayout.closeDrawer(drawerListView);
}
}
}
我整天都在这里,试图解决它并让它运转,但没有运气。我花了很长时间才把真正的抽屉放在第一位工作,看到它全部消失是一种耻辱。
如果你们有能够在活动之间切换的答案,那就太棒了!
答案 0 :(得分:9)
假设您有5个项目(从0索引到4),每个索引标识项目的活动。您可以创建方法selectItem(int position)
以了解用户选择的抽屉项目。
public void selectItem(int position) {
Intent intent = null;
switch(position) {
case 0:
intent = new Intent(this, Activity_0.class);
break;
case 1:
intent = new Intent(this, Activity_1.class);
break;
...
case 4:
intent = new Intent(this, Activity_4.class);
break;
default :
intent = new Intent(this, Activity_0.class); // Activity_0 as default
break;
}
startActivity(intent);
}
最后,将此方法添加到DrawerItemClickListener
:
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
selectItem(position);
drawerLayout.closeDrawer(drawerListView);
}
}
这比使用Fragment
更容易,我想!!!