2010-10-05 49 views
4

我想展示一個對話框,就像我在活動中使用showDialog(...)時一樣,但我需要在窗口小部件上做到這一點,所以我不能使用showDialog(...)。我怎樣才能做到這一點?如何在小部件上顯示對話框?

我想這對我的onReceive方法,但它崩潰:

AlertDialog.Builder builder; 
      builder = new AlertDialog.Builder(context); 
      builder.setMessage("Are you sure?") 
      .setCancelable(false) 
      .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        db.open(); 
        db.remove_last(); 
        db.close(); 
        dialog.dismiss(); 
       } 
      }) 
      .setNegativeButton("No", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        dialog.cancel(); 
       } 
      }); 
      builder.show(); 

感謝,瓦萊里奧

回答

4

Widget是不打算支持一種互動的,並且由於它們的UID下運行啓動器,而不是你的應用程序,他們不會訪問數據庫。 (這可能是你的崩潰的原因;在日誌中查找肯定。)

在你的應用程序中啓動一個你想做的活動。如果你想讓它看起來像一個對話框,應用Theme.Dialog風格:

<activity 
    android:name=".MyThing" 
    android:label="@string/mythinglabel" 
    android:theme="@android:style/Theme.Dialog" 
/> 
+0

數據庫不是問題,它沒有問題,它崩潰也沒有數據庫代碼。我想創建一個確認對話框! – Skatephone 2010-10-05 15:56:52

+0

從崩潰中發佈日誌會很有幫助。 – Blrfl 2010-10-05 16:58:58

0

對話框必須來自一個活動,而不是從窗口小部件。

+1

這使得編寫可重用代碼變得很痛苦。此外:Spinner如何做到這一點? – Martin 2012-05-23 09:26:11