NavigationDrawer打开新活动

时间:2018-03-02 19:01:19

标签: java android android-activity navigation-drawer

我实现了一个基本的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

2 个答案:

答案 0 :(得分:1)

修改

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,你可以将它与字符串相关联

<强> ORIGINAL

您必须向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进行检查

答案 1 :(得分:1)

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

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:


                }

        }

});

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