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
导航抽屉
,带有一个字符串数组。我希望用户单击列表中的某些内容并转到相应的活动
。
然而,我在这里完全不知所措。我已经在这里读了很多答案,但仍然不清楚如何做到这一点
我已经找到了一种有用的方法,可以将所有项目的答案结合起来。但是,它仍然返回myMainActivity
,而不是其他活动
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