我使用两个按钮Exit
和Continue
为我的主要活动创建了自定义对话框:
public class AgeConfirmationDialog extends Dialog {
public AgeConfirmationDialog(Activity a) {
super(a);
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setCancelable(false);
setContentView(R.layout.age_dialog);
// .....
// Find the View objects; checkboxes and buttons logic; SharedPreferences
// .....
}
// .....
}
这是从MainActivity启动对话框的方式:
AgeConfirmationDialog d = new AgeConfirmationDialog(this);
d.show();
每次启动主要活动时,都会弹出此自定义对话框,并要求提供年龄确认。我不希望用户使用后退按钮关闭此对话框,因此我在setCancelable(false)
方法中添加了onCreate
。在选中复选框之前,Continue
按钮处于禁用状态。如果按下Continue
按钮,将关闭对话框 - 使用setOnClickListener
。
问题是,当按下Exit
按钮时,我不知道如何解除该自定义对话框并完成主要活动。
是否可以通过在AgeConfirmationDialog
按钮上设置View.OnClickListener
从Exit
课程执行此操作?
答案 0 :(得分:1)
将代码更改为以下内容:
public class AgeConfirmationDialog extends Dialog {
Activity mainActivity;
public AgeConfirmationDialog(Activity a) {
super(a);
this.mainActivity = a;
}
//in onClick method of finish-button
public void onFinishClick(View v) {
mainActivity.finish(); //finish activity
}
}
答案 1 :(得分:0)
我不知道如何解雇该自定义对话框并完成主要操作 按下退出按钮时的活动。
然后你只需要输入你的ExitButton Click Listener:
finish();
例如:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setPositiveButton("Exit", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
}).create().show();
答案 2 :(得分:0)
在退出按钮的onclicklistener中执行某些操作。像:
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);
您的MainActivity会执行以下操作:
if (getIntent().getBooleanExtra("EXIT", false)) {
finish();
}
你基本上在这里做的是主要活动,这是你的一些关键/值额外的开始活动,并通过getintent在你的主要活动中检查它。
这是退出应用程序的最佳流程,您也可以在注销时使用它。