Java 显示来自其他活动的alertDialog
在我的MainActivity上,我启动了一个本地化服务,该服务运行于所有其他活动,当事件发生时,我需要显示当前活动的AlertDialog,但我无法使其工作。以下是alertDialog的代码:Java 显示来自其他活动的alertDialog,java,android,Java,Android,在我的MainActivity上,我启动了一个本地化服务,该服务运行于所有其他活动,当事件发生时,我需要显示当前活动的AlertDialog,但我无法使其工作。以下是alertDialog的代码: AlertDialog.Builder builder = new AlertDialog.Builder(mMainActivity.this); builder.setMessage("test")
AlertDialog.Builder builder = new AlertDialog.Builder(mMainActivity.this);
builder.setMessage("test")
.setCancelable(false)
.setPositiveButton("ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent intent = new Intent(mMainActivity.this,LocationDetails.class);
intent.putExtra("placeId",1);
startActivity(intent);
}
})
.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
显然,此代码仅在我使用main活动时有效,因为我创建了如下生成器:
new AlertDialog.Builder(mMainActivity.this);
是否有一种方法可以基于当前活动创建生成器,即使它是在另一个活动上创建的
编辑:
我试过了
AlertDialog.Builder=新建AlertDialog.Builder(getApplicationContext())代码>
但是它不起作用。尝试使用this
而不是main活动。this
new AlertDialog.Builder(this)
.setTitle("title")
.setMessage("A message?")
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// yes pressed
}
})
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// no pressed
}
})
.setIcon(android.R.drawable.ic_dialog_alert)
.show();
这是一个自定义警报对话框的工作示例
public class ViewDialog {
public void showAlertDialog(Context context, String title, String message) {
AlertDialog alertDialog = new AlertDialog.Builder(context)
//set title
.setTitle(title)
//set message
.setMessage(message)
//set positive button
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//set what would happen when positive button is clicked
alertDialog.dismiss();
}
})
//set negative button
.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//set what should happen when negative button is clicked
alertDialog.dismiss();
}
})
.show();
}
当您想从其他活动调用此
ViewDialog viewDialog=new ViewDialog();
viewDialog.showAlertDialog(this,"New Dialog","Message");
如果您试图从正在运行的服务中显示警报,则必须调用新的自定义警报对话框类,该类将显示您是否正在进行任何活动的警报
public class AlertDialogActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
displayAlert();
}
private void displayAlert()
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setInverseBackgroundForced(true);
builder.setMessage("You Message here").setCancelable(
false).setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// code here
AlertDialogActivity.this.finish();
dialog.cancel();
}
}).setNegativeButton("Close",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
AlertDialogActivity.this.finish();
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
并从您的服务调用该类以显示警报
Intent dialogIntent = new Intent(getApplicationContext(), AlertDialogActivity.class);
getApplication().startActivity(dialogIntent);
尝试仅使用this
而不是MainActivity。this
要显示来自服务的AlertDailog的错误@SignoDo是什么?如果要显示来自服务的AlertDailog,则可以从下面使用我的代码。新建AlertDialog.Builder时会出现错误(此)但是我没有关于错误可能是什么的建议您试图提醒对话框的活动的名称是什么我的意思是,如果您在名为NewActivity.java
的java文件中编写,那么这将成为NewActivity.this
。是的,我知道,但我只有一个活动具有本地化,如果事件触发,我必须显示当前活动活动的生成器,即使它不是本地化服务所在的活动,您可以从上下文中获取活动名称,然后使用它<代码>活动活动=(活动)上下文代码>我需要的是一个在当前活动上创建自己的AlertDialog,我自己无法在活动上创建它,我只是给你一个解决方案,你可以创建自己的AlertDialog..只需从其他活动调用这个类