我使用的是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;
}
答案 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);
}
}