导航抽屉开启新活动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了导航抽屉开启新活动相关的知识,希望对你有一定的参考价值。

我实现了一个基本的navigationDrawer,带有一个字符串数组。我希望用户点击列表中的某些内容并转到相应的Activity。但是,我在这里完全不知所措。我在这里已经阅读了不少答案,但目前还不清楚如何做到这一点。

我找到了一个结合答案的所有项目的有用方法。然而它仍然返回我的MainActivity而不是其他活动。

addDrawerItems()功能:

public void addDrawerItems() {
    mDrawerList = (ListView) findViewById(R.id.navList);
    String[] osArray = {"How-to", "Milestones", "Bridge & Beams", "Settings"};
    mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, osArray);
    mDrawerList.setAdapter(mAdapter);

    mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            switch (position) {
                case 0: //First item
                    Intent intent1 = new Intent(MainActivity.this, SettingsActivity.class);
                    startActivity(intent1);
                    break;
                case 1: //Second item
                    Intent intent2 = new Intent(MainActivity.this, Bridge_BeamsActivity.class);
                    startActivity(intent2);
                    break;
                case 2: //Third item
                    Intent intent3 = new Intent(MainActivity.this, MileStonesActivity.class);
                    startActivity(intent3);
                    break;
                case 3: //Fourth item
                    Intent intent4 = new Intent(MainActivity.this, HowToActivity.class);
                    startActivity(intent4);
                    break;
                default:
            }
        }
    });
}

现在我的onCreate我称之为addDrawerItems()

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //Check if there is any saved data
    checkFirstRun();

    //Apply saved data
    savedData();

    //Apply drawer
    addDrawerItems();

    }

任何帮助将非常感激!如果有任何不清楚的代码或我的解释,请不要犹豫与我们联系。

如果您想查看已有的内容,请在Play商店中查看我的测试版应用:https://play.google.com/store/apps/details?id=jhpcoenen.connectlife.beams

答案

设置适配器后添加以下代码:

mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {



                pos =position;
                Intent intent = new Intent(MainActivity.this, CorrespondingActivity.class);
                startActivity(intent);


                switch (position) {
                    default:


                }

        }

});

意图功能将进行所需的活动。

另一答案

编辑

v.getId()将获取视图的id,即在R类中注册的id。由于您的数组只包含字符串,因此将字符串与视图ID绑定的唯一方法是手动检查它。构建侦听器并记录您的id以识别它

mDrawerList.setOnClickListener(new View.OnClickListener(){
   @Override
   public void onClick(View v){
       Log.d("your App","id clicked "+v.getId());
       //this view is the item clicked by the user
       Intent i = new Intent(getApplicationContext(),DestinyActivity.class)
       i.putExtra("optionSelected",v.getId());
       startActivity(i);
   }
});

你会得到一个像234252341这样的id,并为列表中的每个项目提供一个不同的id,你可以将它与字符串相关联

原版的

您必须向ListView添加一个单击侦听器,并根据单击的视图对其执行操作。像这样的东西

mDrawerList.setOnClickListener(new View.OnClickListener(){
   @Override
   public void onClick(View v){
       //this view is the item clicked by the user
       Intent i = new Intent(getApplicationContext(),DestinyActivity.class)
       i.putExtra("optionSelected",v.getId())
       startActivity(i)
   }
})

在DestinyActivity中,您必须使用Intent.getExtras获取额外内容并执行您需要的任何操作。 PD:代码是手写的,请使用IDE进行检查

以上是关于导航抽屉开启新活动的主要内容,如果未能解决你的问题,请参考以下文章

在导航抽屉上调用不是片段活动的活动

如何在导航抽屉活动模板中的片段之间传递字符串变量

想要使用片段从导航抽屉活动移动到另一个屏幕,以在所有屏幕上显示抽屉

导航抽屉和Android中的活动

带有片段的 Android Studio 导航抽屉。工具栏隐藏在下一个片段活动或页面中

带有活动和子片段的导航抽屉