Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 导航抽屉打开新活动_Java_Android_Android Activity_Navigation Drawer - Fatal编程技术网

Java 导航抽屉打开新活动

Java 导航抽屉打开新活动,java,android,android-activity,navigation-drawer,Java,Android,Android Activity,Navigation Drawer,我实现了一个基本的导航抽屉,带有一个字符串数组。我希望用户单击列表中的某些内容并转到相应的活动。 然而,我在这里完全不知所措。我已经在这里读了很多答案,但仍然不清楚如何做到这一点 我已经找到了一种有用的方法,可以将所有项目的答案结合起来。但是,它仍然返回myMainActivity,而不是其他活动 addDrawerItems()函数: public void addDrawerItems() { mDrawerList = (ListView) findViewById(R.id.na

我实现了一个基本的
导航抽屉
,带有一个字符串数组。我希望用户单击列表中的某些内容并转到相应的
活动
。 然而,我在这里完全不知所措。我已经在这里读了很多答案,但仍然不清楚如何做到这一点

我已经找到了一种有用的方法,可以将所有项目的答案结合起来。但是,它仍然返回my
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:
            }
        }
    });
}
任何帮助都将不胜感激! 如果有任何不清楚的代码或我的解释,请毫不犹豫地联系我

如果您想查看已经存在的内容,请在Play Store中查看我的测试版应用程序:

编辑

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中,你必须有目的地获取额外信息。获取额外信息并做你需要的任何事情。 PD:代码是手写的,请使用IDE检查它

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中,你必须有目的地获取额外信息。获取额外信息并做你需要的任何事情。
PD:代码是手写的,请使用IDE检查它设置适配器后添加以下代码:

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:


                }

        }

});

mDrawerList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
pos=位置;
意向意向=新意向(MainActivity.this,对应的Activity.class);
星触觉(意向);
开关(位置){
违约:
}
}
});

intent功能将用于所需的活动。

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

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:


                }

        }

});

mDrawerList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
pos=位置;
意向意向=新意向(MainActivity.this,对应的Activity.class);
星触觉(意向);
开关(位置){
违约:
}
}
});

意向功能将用于所需的活动。

感谢您的帮助。这听起来可能很愚蠢,但在
i.putExtra(“optionSelected”,v.getId())我没有给字符串一个id。或者我需要调用
navList
?谢谢您的编辑。我是在设置了适配器之后还是创建了一个新的函数之后才使用它呢?谢谢。我得到了一个ID,但列表上的每一项都是一样的,即16908308。我还对你的代码做了一些调整,因为它抱怨onClick。你知道会出什么问题吗?我将代码粘贴在set adapter的正下方。
mDrawerList.setOnItemClickListener(新AdapterView.OnItemClickListener(){@Override public void onItemClick(AdapterView父项,视图视图,int位置,长id){Log.d(“您的应用程序”,“id已单击”+View.getId());//此视图是用户Intent i=new Intent(getApplicationContext(),SettingsActivity.class);i.putExtra(“optionSelected”,view.getId());startActivity(i);}}}单击的项我已将您的答案和其他答案组合在一起,但不知何故它仍然返回我的
main活动
。知道为什么吗?我还更新了代码以显示我现在使用的内容。感谢您的帮助。这听起来可能很愚蠢,但在
i.putExtra(“optionSelected”,v.getId())我没有给字符串一个id。或者我需要调用
navList
?谢谢您的编辑。我是在设置了适配器之后还是创建了一个新的函数之后才使用它呢?谢谢。我得到了一个ID,但列表上的每一项都是一样的,即16908308。我还对你的代码做了一些调整,因为它抱怨onClick。你知道会出什么问题吗?我将代码粘贴在set adapter的正下方。
mDrawerList.setOnItemClickListener(新AdapterView.OnItemClickListener(){@Override public void onItemClick(AdapterView父项,视图视图,int位置,长id){Log.d(“您的应用程序”,“id已单击”+View.getId());//此视图是用户Intent i=new Intent(getApplicationContext(),SettingsActivity.class);i.putExtra(“optionSelected”,view.getId());startActivity(i);}}}单击的项我已将您的答案和其他答案组合在一起,但不知何故它仍然返回我的
main活动
。知道为什么吗?我还更新了代码以显示我现在使用的内容。感谢您的帮助。执行代码后,建议在
pos之前添加
int