Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.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
Android 每个列表项打开不同的活动_Android_Listview_Android Intent_Listitem - Fatal编程技术网

Android 每个列表项打开不同的活动

Android 每个列表项打开不同的活动,android,listview,android-intent,listitem,Android,Listview,Android Intent,Listitem,代码有一个列表视图,单击列表项会弹出一个警报对话框。AlertDialog有两个单选按钮“是”和“否”,然后是一个“确定”按钮 当用户选择“是”时,下一个活动将启动,如果选择“否”,他们将保持在相同的活动 我的问题是:无论我选择哪个列表项,我都会被带到同一个“下一个活动”。根据我选择的列表项,我想参加不同的活动 listview = (ListView) findViewById(R.id.mylistview); final String[] items = new String[]{"IOS

代码有一个
列表视图
,单击列表项会弹出一个
警报对话框
AlertDialog
有两个单选按钮“是”和“否”,然后是一个“确定”按钮

当用户选择“是”时,下一个
活动
将启动,如果选择“否”,他们将保持在相同的
活动

我的问题是:无论我选择哪个列表项,我都会被带到同一个“下一个活动”。根据我选择的列表项,我想参加不同的活动

listview = (ListView) findViewById(R.id.mylistview);
final String[] items = new String[]{"IOS", "ANDROID", "WINDOWS"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_expandable_list_item_1, items);
listview.setAdapter(adapter);

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

        int itemposition = position;

        String itemvalue = (String) listview.getItemAtPosition(position);
        final CharSequence[] items1 = {"yes", "no"};
        final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setTitle("slection confirmation");

        builder.setCancelable(false);
        builder.setSingleChoiceItems(items1, -1, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                selection = (String) items1[which];
                Toast.makeText(getApplicationContext(), items1[which], Toast.LENGTH_SHORT).show();

            }
        });
        builder.setNeutralButton("OK",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                switch (selection)
                {
                    case("yes"):
                        Intent myint=new Intent(MainActivity.this,secondpage.class);
                        myint.putExtra("act1","");
                        startActivity(myint);
                        break;
                    case("no"):
                        dialog.cancel();
                        break;
                }
            }
        });
        AlertDialog alert = builder.create();
        alert.show();
    }
    });

}
}
listview=(listview)findViewById(R.id.mylistview);
最终字符串[]项=新字符串[]{“IOS”、“ANDROID”、“WINDOWS”};
ArrayAdapter=新的ArrayAdapter(getApplicationContext(),android.R.layout.simple\u expandable\u list\u item\u 1,items);
setAdapter(适配器);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
int itemposition=位置;
String itemvalue=(String)listview.getItemAtPosition(position);
final CharSequence[]items1={“是”、“否”};
final AlertDialog.Builder=新建AlertDialog.Builder(MainActivity.this);
建造商名称(“选择确认书”);
builder.setCancelable(false);
setSingleChoiceItems(items1,-1,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
选择=(字符串)项1[其中];
Toast.makeText(getApplicationContext(),items1[which],Toast.LENGTH_SHORT).show();
}
});
setNeutralButton(“确定”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
开关(选择)
{
案例(“是”):
Intent myint=newintent(MainActivity.this,secondpage.class);
myint.putExtra(“act1”,简称“);
星触觉(myint);
打破
案件(“否”):
dialog.cancel();
打破
}
}
});
AlertDialog alert=builder.create();
alert.show();
}
});
}
}

您正在硬编码
第二个类。请尝试使用动态变量,该变量根据您单击的项保存类的值

public static Activity ClASS_NAME;
  //set CLASS_NAME based on item position for example 
     switch (selection)
                        {
                            case("yes"):
                                Intent myint=new Intent(MainActivity.this,CLASS_NAME);
                                myint.putExtra("act1","");
                                startActivity(myint);
                                break;
                            case("no"):
                                dialog.cancel();
                                break;
                        }

您正在硬编码
second.class
,请尝试使用一个动态变量,该变量根据您单击的项目保存class值

public static Activity ClASS_NAME;
  //set CLASS_NAME based on item position for example 
     switch (selection)
                        {
                            case("yes"):
                                Intent myint=new Intent(MainActivity.this,CLASS_NAME);
                                myint.putExtra("act1","");
                                startActivity(myint);
                                break;
                            case("no"):
                                dialog.cancel();
                                break;
                        }

首先,为不同活动的所有类名创建字符串资源。在“res/strings.xml”文件中,可以编写

<string name="sFirstClass">my.package.name.MyFirstClass</string>
<string name="sSecondClass">my.package.name.MySecondClass</string>
其中“getMyClass()”是一个匹配位置和目标活动的方法:

private String getMyClass(int pos)
{
    String myClass;
    switch (pos)
    {
     case 0: myClass = getString(R.string.sFirstClass);
             break;
     case 1: myClass = getString(R.string.sSecondClass);
             break;
     //...
     default: // do whatever is appropriate
    }
return myClass;
}
现在,对于OK按钮,您可以将
意图定义为

try 
{
    Intent myint = new Intent(MainActivity.this, Class.forName(SECONDPAGE_CLASS));
}
catch (ClassNotFoundException e)
{
   e.printStackTrace();
}

首先,为不同活动的所有类名创建字符串资源。在“res/strings.xml”文件中,可以编写

<string name="sFirstClass">my.package.name.MyFirstClass</string>
<string name="sSecondClass">my.package.name.MySecondClass</string>
其中“getMyClass()”是一个匹配位置和目标活动的方法:

private String getMyClass(int pos)
{
    String myClass;
    switch (pos)
    {
     case 0: myClass = getString(R.string.sFirstClass);
             break;
     case 1: myClass = getString(R.string.sSecondClass);
             break;
     //...
     default: // do whatever is appropriate
    }
return myClass;
}
现在,对于OK按钮,您可以将
意图定义为

try 
{
    Intent myint = new Intent(MainActivity.this, Class.forName(SECONDPAGE_CLASS));
}
catch (ClassNotFoundException e)
{
   e.printStackTrace();
}

我有了这个想法,但几周前我开始学习Android,我不熟悉如何使用动态变量。我会尝试用谷歌搜索它。谢谢:)我有这个想法,但我几周前开始学习Android,我不熟悉如何使用动态变量。我会尝试用谷歌搜索它。谢谢:)