0

我正在向用户展示一个包含 2 个项目的警报对话框,我想为这两个项目实现一个 OnClickListener。我可以设置 1 项,但是当我尝试使用 switch 语句时,我收到此错误:

无法打开 CharSequence[] 类型的值。只允许可转换的 int 值或枚举常量

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

    // TODO Auto-generated method stub
    final CharSequence[] items = {"Reviews", "More Info"};
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Please Select an Option");
    builder.setItems(items, new DialogInterface.OnClickListener() {


        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub

       switch (items){

        case 1 :

            //do something

        case 2:

            Intent intent = new Intent (MyActivity.this, WebViewActivity.class);
            MyActivity.this.startActivity(intent);


        }
    });
AlertDialog alert = builder.create();
alert.show();
4

2 回答 2

0

Android 运行 JRE 6。如果我没记错的话。直到今年发布的 JRE 7 才允许执行 switch(CharSequence[]) 和 switch(String)。您必须执行一系列 if else 语句才能解决此问题。

于 2012-06-29T19:03:03.120 回答
0

在开关盒中使用字符串作为菜单?

Java 7 中添加了 switch 语句中的字符串。例如,请看这里。由于 Android 开发当前不基于 Java 7 语法,因此您将不得不走另一条路。这意味着:if-else 语句。他们不是最漂亮的,但他们会完成工作。

所以可以试试

 public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub

           switch (which){

            case 0 :
                    String str = items[which];
                //do something

            case 1:

                Intent intent = new Intent (MyActivity.this, WebViewActivity.class);
                MyActivity.this.startActivity(intent);


            }
        });

http://www.botskool.com/geeks/how-create-dialog-box-android-part-2

于 2012-06-29T19:09:51.143 回答