Android 单击按钮时显示警报对话框
我试图查看带有单选按钮的对话框,但当我单击按钮时,警报对话框从未出现。下面是代码。请让我知道是否有任何替代解决方案。此示例取自API演示Android 单击按钮时显示警报对话框,android,radio-button,dialog,Android,Radio Button,Dialog,我试图查看带有单选按钮的对话框,但当我单击按钮时,警报对话框从未出现。下面是代码。请让我知道是否有任何替代解决方案。此示例取自API演示 public class MainPage extends Activity{ Button start; private static final int DIALOG_SINGLE_CHOICE = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.on
public class MainPage extends Activity{
Button start;
private static final int DIALOG_SINGLE_CHOICE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainpage);
start = (Button) findViewById(R.id.start);
start.setBackgroundResource(R.drawable.read);
start.setOnClickListener(new View.OnClickListener() {
@SuppressWarnings("deprecation")
public void onClick(View v) {
showDialog(DIALOG_SINGLE_CHOICE );
}
});
}
@Override
@Deprecated
protected Dialog onCreateDialog(int id) {
id = DIALOG_SINGLE_CHOICE;
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Choose your option");
builder.setSingleChoiceItems(R.array.Baani, 0, new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
})
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* User clicked Yes so do some stuff */
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* User clicked No so do some stuff */
}
})
.create();
return super.onCreateDialog(id);
}
}
}
您需要替换
返回super.onCreateDialog(id)使用返回builder.show()代码>.create()
将从生成器中创建一个警报对话框,但不会显示该对话框.show()
将从生成器创建对话框并在屏幕上显示
我还认为,intid
可能是不必要的。您可以尝试以下代码,它应该适合您:
public class MainPage extends Activity{
Button start;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainpage);
start = (Button) findViewById(R.id.start);
start.setBackgroundResource(R.drawable.read);
start.setOnClickListener(new View.OnClickListener() {
@SuppressWarnings("deprecation")
public void onClick(View v) {
showDialog(DIALOG_SINGLE_CHOICE );
}
});
}
@Override
public Dialog onCreateDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Choose your option");
builder.setSingleChoiceItems(R.array.Baani, 0, new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
})
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* User clicked Yes so do some stuff */
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* User clicked No so do some stuff */
}
});
return builder.show();
}
}
}
您需要替换返回super.onCreateDialog(id)使用返回builder.show()代码>.create()
将从生成器中创建一个警报对话框,但不会显示该对话框.show()
将从生成器创建对话框并在屏幕上显示
我还认为,intid
可能是不必要的。您可以尝试以下代码,它应该适合您:
public class MainPage extends Activity{
Button start;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainpage);
start = (Button) findViewById(R.id.start);
start.setBackgroundResource(R.drawable.read);
start.setOnClickListener(new View.OnClickListener() {
@SuppressWarnings("deprecation")
public void onClick(View v) {
showDialog(DIALOG_SINGLE_CHOICE );
}
});
}
@Override
public Dialog onCreateDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Choose your option");
builder.setSingleChoiceItems(R.array.Baani, 0, new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
})
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* User clicked Yes so do some stuff */
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* User clicked No so do some stuff */
}
});
return builder.show();
}
}
}
您在onCreateDialog()中做得不对
首先,您不应该做id=DIALOG\u SINGLE\u COICE
,而是测试id
值,如果它等于DIALOG\u SINGLE\u CHOICE
。
*如果是,则使用AlertDialog.Builder
创建对话框
,并返回Builder.create()
。
*如果否,则返回super.onCreateDialog(id)
但是此方法已被弃用,您应该改用。您在onCreateDialog()中做得不对。
首先,您不应该做id=DIALOG\u SINGLE\u COICE
,而是测试id
值,如果它等于DIALOG\u SINGLE\u CHOICE
。
*如果是,则使用AlertDialog.Builder
创建对话框
,并返回Builder.create()
。
*如果否,则返回super.onCreateDialog(id)
但此方法已被弃用,您应该改用。创建此函数并在单击事件中使用showAskDialog()函数
private void showAskDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("DialogTitle").setMessage("DialogMessage").setCancelable(true).setSingleChoiceItems(R.array.Baani, 0, new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}).setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
}).setPositiveButton("YES", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
// before @TronicZomB advice
//AlertDialog alert = builder.create();
//alert.show();
// after @TronicZomB advice
builder.show();
}
创建此函数并在单击事件中使用showAskDialog()函数
private void showAskDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("DialogTitle").setMessage("DialogMessage").setCancelable(true).setSingleChoiceItems(R.array.Baani, 0, new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}).setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
}).setPositiveButton("YES", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
// before @TronicZomB advice
//AlertDialog alert = builder.create();
//alert.show();
// after @TronicZomB advice
builder.show();
}
.create()
是不必要的。在生成器上调用.show()
将创建它并在一行代码中显示它。使用.create()
的唯一原因是,您可以在其他地方多次调用.show()
,但在这种情况下不需要它。.create()
是不必要的。在生成器上调用.show()
将创建它并在一行代码中显示它。使用.create()
的唯一原因是,您可以在其他位置多次调用.show()
,但在这种情况下,不需要它。.create()
不会显示对话框。您需要在“*如果是…”中返回builder.show()
。create()
将不显示对话框。您需要在“*如果是…”中返回builder.show()