好的,这是我关于SO的第一个问题,我想知道,如果真的有必要使用DialogFragment作为我的活动中的简单自定义对话框的容器。
这是我的代码:
public class MainActivity extends Activity
{
// VARS:
private Button buttonShowDialog;
private Dialog dialogSimple;
private Button buttonOK;
private Button buttonCancel;
// ONCREATE:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.act_main);
buttonShowDialog = (Button) findViewById(R.id.button_showdialog);
buttonShowDialog.setOnClickListener(new OnClickListener)
{
@Override
public void onClick(View view)
{
if (dialogSimple != null)
{
dialogSimple.show();
}
else
{
showDialog();
}
}
});
}
// SHOW DIALOG:
private void showDialog()
{
dialogSimple = new Dialog(MainActivity.this);
dialogSimple.setContentView(R.layout.dialog);
buttonOK = (Button) dialogSimple.findViewById(R.id.button_ok);
buttonCanel = (Button) dialogSimple.findViewById(R.id.button_cancel);
buttonOK.setOnClickListener(new OnClickListener)
{
@Override
public void onClick(View view)
{
doSomeStuff();
}
});
buttonCanel.setOnClickListener(new OnClickListener)
{
@Override
public void onClick(View view)
{
dialogSimple.dismiss();
}
});
dialogSimple.show();
}
}
我的活动清单条目:
android:configChanges="orientation|keyboardHidden|keyboard|screenSize"
我测试过,它运行良好: API 8(设备), 9(设备), 10(鸸)), 11(鸸)), 16(鸸)), 17(设备), 18(设备) 和19(鸸)
所以我担心,通过这个程序,我的应用程序可能在某些设备上行为不端,因为Dialog不在DialogFragment中。
我的问题:
答案 0 :(得分:0)
不,不是必需的。只需recommended。
但你可以通过警告对话框来实现它:
AlertDialog.Builder bld = new AlertDialog.Builder();
bld.setMessage(...);
bld.setPositiveButton(...);
bld.setNegativeButton(...);
bld.create().show();
答案 1 :(得分:0)
Dialog类是用于显示对话框的基类。您应该使用更具体的子类来显示“是/否”对话框。例如:AlertDialog。
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(MyActivity.this);
builder.setMessage(R.string.dialog_fire_missiles)
.setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// FIRE ZE MISSILES!
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
// Create the AlertDialog object and show it
builder.create().show();
您可以找到更多详情here。