如何使用setItems并选择一个数字并调用它?

时间:2016-05-29 17:35:01

标签: android android-studio android-alertdialog

我使用的是Android Studio 2.1.1。 我想创建一个AlertDialog,其中包含两个(并不是真正重要的)电话号码,您可以选择一个,然后拨打该号码。 到目前为止,我带来了这个,但是当我选择一个数字时它就崩溃了:

public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_manu , menu);
    return true ;
}

@Override
public boolean onOptionsItemSelected(final MenuItem item) {
    switch (item.getItemId()) {

           case R.id.Call :

            AlertDialog.Builder menuDialog = new AlertDialog.Builder(SeconedScreen.this) ;
            menuDialog.setTitle("chose a number to call") ;
            menuDialog.setItems(phonenumbers, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int phonenumbers) {

                    switch (phonenumbers){
                        case 0  :
                            Intent dial = new Intent(Intent.ACTION_DIAL) ;
                            dial.setData(Uri.parse(String.valueOf(phonenumbers))) ;
                            startActivity(dial);
                            break ;
                    }
                }
            }) ;
            menuDialog.show() ;
            return true ;
    }
    return true;
}

1 个答案:

答案 0 :(得分:0)

问题是字符串值是错误的,它假设是String.valueOf(" tel:0548978978") 好吧,我通过这样做来实现它的工作:

  @Override
  public boolean onOptionsItemSelected(final MenuItem item) {
    switch (item.getItemId()) {

        case R.id.map :
            Intent openmap = new Intent(Intent.ACTION_VIEW) ;
            openmap.setData(Uri.parse("https://www.google.maps.com"));
            startActivity(openmap);
            return true ;

        case R.id.Call :

            final AlertDialog.Builder menuDialog = new AlertDialog.Builder(SeconedScreen.this) ;
            menuDialog.setTitle("chose a number to call") ;
            menuDialog.setSingleChoiceItems(phonenumbers,-1, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int phonenumbers) {

                    switch (phonenumbers){
                        case 0  :

                            Intent dial = new Intent(Intent.ACTION_DIAL) ;
                            dial.setData(Uri.parse(String.valueOf("tel: 0548978978"))) ;
                            startActivity(dial);
                            break ;

                        case 1 :
                            Intent dial1 = new Intent(Intent.ACTION_DIAL) ;
                            dial1.setData(Uri.parse(String.valueOf("tel: 0586587989"))) ;
                            startActivity(dial1);
                            break ;
                    }

                }

            }) ;
            menuDialog.show() ;
            return true ;
    }
    return super.onOptionsItemSelected(item);
}

}