2014-09-22 64 views
-1

我在AlarmManager中顯示AlertDialog。 DialogNotification(警報對話框) - 活動,在清單:爲什麼AlertDialog在我不想要時顯示

<activity 
     android:name=".notification.DialogNotification" 
     android:label="@string/title_activity_dialog_notification" 
     android:theme="@android:style/Theme.Translucent.NoTitleBar"> 
    </activity> 

我想對話顯示出來,即使程序不運行,但是當我去到應用程序,在啓動畫面對話框顯示,但我不叫他。我該如何解決它?

public class DialogNotification extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     Log.d("Log", "onCreate DialogNotification"); 

     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setIcon(R.drawable.app_icon) 
       .setTitle(R.string.time_to_call_your_clients) 
       .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         Intent notificationIntent = new Intent(DialogNotification.this, SplashActivity.class); 
         startActivity(notificationIntent); 
         dialog.cancel(); 
         DialogNotification.this.finish(); 
        } 
       }) 
       .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         dialog.cancel(); 
         DialogNotification.this.finish(); 
        } 
       }).show(); 
    } 
} 
+0

那是因爲你調用上的onCreate對話框。每次打開應用程序時都會顯示它 – 2014-09-22 15:34:28

+0

在.show()調用中放置一個斷點....當您看到堆棧和您正在使用的函數時,它應該非常明顯。 – RichieHH 2014-09-22 15:39:14

回答

0

我有點困惑你的發言「我想對話顯示出來,即使程序不運行」,因爲如果程序沒有運行,我不太確定對話應該如何現身。另外,如果不瞭解您的程序流程,我無法精確確定問題出在哪裏。

這就是說,這是我的猜測。如果您在看到DialogNotification活動時看到此事件,則問題可能在於您每次調用「onCreate」時都會創建一個新的AlertDialog.Builder

如果您想要有一個AlertDialog實例,那麼您可能需要添加一個條件語句(if語句)以確保您想要創建一個新的AlertDialog

0

我發現我的問題!我啓動服務,它啓動DialogActivity,在方法onStartCommand是:

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    //some code 
    return super.onStartCommand(intent, flags, startId); 
} 

這是不正確的解決方案!

這是正確的解決方案:

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    //some code 
    stopSelf(); 
    return START_NOT_STICKY; 
} 
相關問題