2015-05-29 58 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); 
相關問題