Android 当用户按下关联对话上的肯定按钮时,完成活动
我希望我的活动(显示对话)在用户单击对话的积极按钮时结束。这可能吗。在哪里放置finish() 调用对话的代码:Android 当用户按下关联对话上的肯定按钮时,完成活动,android,android-dialog,Android,Android Dialog,我希望我的活动(显示对话)在用户单击对话的积极按钮时结束。这可能吗。在哪里放置finish() 调用对话的代码: if(name.equals("")) { DialogFragment newFragment = new NouserFragment(); newFragment.show(getFragmentManager(), "makeprofile"); } public Dialog onCreateDialog(Bundle savedInst
if(name.equals("")) {
DialogFragment newFragment = new NouserFragment();
newFragment.show(getFragmentManager(), "makeprofile"); }
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(R.string.nouseralert)
.setPositiveButton(R.string.add, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent intent = new Intent(getActivity(), Editprofile.class);
startActivityForResult(intent, 0);
}
})
.setNegativeButton(R.string.ignore, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
// Create the AlertDialog object and return it
return builder.create();
}
对话代码:
if(name.equals("")) {
DialogFragment newFragment = new NouserFragment();
newFragment.show(getFragmentManager(), "makeprofile"); }
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(R.string.nouseralert)
.setPositiveButton(R.string.add, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent intent = new Intent(getActivity(), Editprofile.class);
startActivityForResult(intent, 0);
}
})
.setNegativeButton(R.string.ignore, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
// Create the AlertDialog object and return it
return builder.create();
}
点击对话框的肯定按钮,调用
dialog.disease()编码>然后finish()
单击对话框的肯定按钮调用dialog.disease()编码>然后finish()代码>您可以使用以下代码:
public void showMessageAlert(){
runOnUiThread(new Runnable() {
public void run() {
AlertDialog.Builder builder = new AlertDialog.Builder(HomeScreen.this);
builder.setTitle(ConfigClass.ALERT_TITLE);
builder.setMessage(ConfigClass.MSG_ALERT);
builder.setCancelable(true);
builder.setInverseBackgroundForced(true);
builder.setPositiveButton("I Accept", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
ActivityName.this.finish();
}
});
builder.setNegativeButton("I decline", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
//Do nothing
}
});
AlertDialog alert = builder.create();
alert.show();
}
});
}
您可以使用以下代码:
public void showMessageAlert(){
runOnUiThread(new Runnable() {
public void run() {
AlertDialog.Builder builder = new AlertDialog.Builder(HomeScreen.this);
builder.setTitle(ConfigClass.ALERT_TITLE);
builder.setMessage(ConfigClass.MSG_ALERT);
builder.setCancelable(true);
builder.setInverseBackgroundForced(true);
builder.setPositiveButton("I Accept", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
ActivityName.this.finish();
}
});
builder.setNegativeButton("I decline", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
//Do nothing
}
});
AlertDialog alert = builder.create();
alert.show();
}
});
}
这是一个内部类可见性/作用域的Java问题。在监听器内部,这个
引用了OnClickListener
对象,幸运的是,它没有finish()
方法。要使其引用活动,请执行以下任一操作:
- 如果监听器是在活动中定义的,只需使用
finish()
,不带任何前缀。这样,Java将查找最近的封闭对象,该对象定义了一个名为finish()
的方法,并将找到活动的方法
- 使用
YouActivity.this.finish()
引用所包含的活动实例而不产生任何歧义(显然,如果侦听器是youractive的内部类(可能是匿名的)
- 如果活动的某个实例是在另一个文件中定义的,则在该实例上调用
mActivity.finish()
(可能您必须强制转换上下文
对象)
通常监听器被定义为活动中的匿名内部类,因此调用finish()unfixed应该足够了,但是您可能需要使用A.this.finish()命令
表单如果存在名称冲突这是内部类可见性/作用域的Java问题。在侦听器中,此
引用OnClickListener
对象,并且(幸运的是)它没有finish()
方法。要让它引用活动,请执行以下操作之一:
- 如果监听器是在活动中定义的,只需使用
finish()
,不带任何前缀。这样,Java将查找最近的封闭对象,该对象定义了一个名为finish()
的方法,并将找到该活动的方法
- 使用
YouActivity.this.finish()
引用所包含的活动实例而不产生任何歧义(显然,如果侦听器是youractive的内部类(可能是匿名的)
- 如果活动的某个实例是在另一个文件中定义的,则在该实例上调用
mActivity.finish()
(可能您必须强制转换上下文
对象)
通常监听器被定义为活动中的匿名内部类,因此调用finish()unfixed应该足够了,但是如果存在名称冲突,您可能需要使用A.this.finish()
表单。好的。我可以通过将getActivity().finish()放到onClick()下来完成活动对话界面的
。好的。我可以通过在对话界面的
onClick()
下放置getActivity().finish()
来完成活动。放置finish()单击警报对话框的“积极事件”按钮。发布您的代码,以便understand@DipakKeshariya不可以。这将不起作用,因为finish()仅在活动类下被识别。如果我将finish()放在click事件上,则会出现此错误。类型new DialogInterface.OnClickListener()的方法finish()未定义{}
@Ramkiran当然。@K_-K然后写下你的ActivityName。这个.finish();它会解决你的问题。@K_-K你为什么要在点击积极按钮时打开新的活动?将finish()放在警报对话框的点击积极按钮事件上。发布你的代码,这样可以很容易地打开它understand@DipakKeshariya不,那不行,因为finish()只有在活动类下才能识别。如果在单击事件上放置finish(),则会出现此错误。对于类型new DialogInterface.OnClickListener(){}
@Ramkiran sure。@K\K然后写入ActivityName.this.finish();这将解决您的问题。@K_K为什么要在单击“肯定”按钮时打开“新活动”?但它无法识别finish(),因为它不是一个活动类。@K_K那么从哪里打开拨号盘?@K_K如果没有问题,您可以将“活动”用作对话框,但它无法识别finish()因为它不是一个活动类。@K_K那么从哪里打开拨号盘?@K_K如果没有问题,您可以将活动用作对话框