2015-05-29 56 views
-7

在我的MainActivity上,我开始了一个本地化服务,它运行在所有其他方面,当发生事件时,我需要在当前活动上显示AlertDialog,但是我无法正常工作。这是为alertDialog代码:显示一条信息另一个活动的对话Android

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(); 

很显然,因为我创造这样的建设者此代码只如果我在我的MainActivity工作:

new AlertDialog.Builder(mMainActivity.this); 

有没有一种方法来创建一个建设者基于当前的活动,即使它在另一个上创建?

编辑:

我试着用 AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext()); 但它不工作..

+0

尝试只用'this',而不是'MainActivity.this' –

+0

给我一个错误 – Signo

+0

是什么@Signo –

回答

0

尝试使用的this代替MainActivity.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(); 
+0

它给我一个新的AlertDialog.Builder(这个)的错误,但我没有关于错误可能是什么的建议 – Signo

+0

你试图提醒一个对话框的活动的名称是什么 –

+0

我需要在我的每一个活动上显示它 – Signo

0

这是当你想如果你正试图从显示警告,要求onother活动

Dialog myDialog; 
myDialog=new Dialog(onotheractivity.this); 
myDialog.setTitle("onother activity"); 
myDialog.setContentView(R.layout.error); 
myDialog.show(); 
+0

我需要的是一个AlertDialog,它在当前活动上创建自己,我不能在活动本身上创建它 – Signo

+0

我只是给你一个soln,你可以创建自己的alert语句。 .just从另一个活动中调用这个类 – Tufan

1

调用这个自定义警告对话框的工作示例试试这个

public class OwnALertDialog { 

public void showAlertDialog(final Context context, String title, String message, 
     Boolean status) { 
    final Dialog alertDialog = new Dialog(new ContextThemeWrapper(context, android.R.style.Theme_Translucent)); 
    alertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    alertDialog.setCancelable(true); 
    alertDialog.setContentView(R.layout.dialog); 
    alertDialog.setTitle(title); 

    Button ok=(Button) alertDialog.findViewById(R.id.btncancel); 
    Button cancel=(Button) alertDialog.findViewById(R.id.btnsearch); 
    ok.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Activity activity=(Activity) context; 
     activity.finish(); 
    } 
}); 
    cancel.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     alertDialog.dismiss(); 
    } 
}); 

    alertDialog.show(); 
} 
} 

您运行服务,那么你必须调用新的自定义警报对话框类,它将显示警报你是否在任何活动。

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); 
相关问题