【问题标题】:Navigation Drawer to switch between activities导航抽屉在活动之间切换
【发布时间】:2014-03-17 23:30:12
【问题描述】:

我浏览了该网站一段时间,但找不到问题的答案,我试图让我的导航抽屉在活动而不是片段之间切换。我已经尝试过 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);

    }
}

}

我整天都在做这个,试图修复它并让它工作,但没有运气。我花了很长时间才让实际的抽屉开始工作,看到它全部消失会很遗憾。

如果你们有能够在活动之间切换的答案,那就太好了!

【问题讨论】:

    标签: android navigation-drawer


    【解决方案1】:

    假设您有 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);
    
        }
    }
    

    我认为这比使用Fragments 更容易!!!

    【讨论】:

    • 非常感谢,我不知道如何使用该位置,但我发现它与它有关:)
    • 好的,所以你解决了这个问题?!如果是,请不要忘记将答案标记为correct。一个upvote也会很高兴:)
    • 它可以工作,但您开始的活动中没有导航抽屉:(
    猜你喜欢
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    相关资源
    最近更新 更多