2012-01-05 13 views
2

我認爲我的問題很容易爲您解決。我有一個服務在後臺運行,並啓動一個啓動一個活動的Intent,這會打開一個對話框。 她是從服務我的代碼:如何建立由服務啓動的對話框?

Intent todialog = new Intent(); 
todialog.setClass(myService.this, openDialogInSleep.class); 
todialog.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(todialog); 

和這裏的活動:

import android.app.Activity; 
import android.app.AlertDialog; 
import android.os.Bundle; 

public class openDialogInSleep extends Activity{ 

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

    new AlertDialog.Builder(openDialogInSleep.this) 
    .setTitle("huhu") 
    .setNeutralButton("close", null); 
} 
} 

最後Android清單:

<activity android:name=".openDialogInSleep" android:theme="@android:style/Theme.Dialog"></activity> 

我的問題是,有沒有顯示標題爲「huhu」和按鈕「關閉」的對話框。只顯示一個奇怪形式的對話框,它只是顯示我的活動名稱的一部分。 我忘了什麼? 請幫幫我。

製造商。亞歷克斯

回答

2

你忘記鏈接show()實際顯示您的對話框。

new AlertDialog.Builder(openDialogInSleep.this) 
    .setTitle("huhu") 
    .setNeutralButton("close", new OnClickListener() { 

     @Override 
     public void onClick(DialogInterface arg0, int arg1) { 
      openDialogInSleep.this.finish(); 
     } 

    }) 
    .show(); 
+0

ohhh謝謝..什麼是失敗:D,但也有一件事你可以回答。現在我的對話框被顯示出來了,但是如果我點擊關閉窗口,仍然有那個窗口顯示我的活動名稱。我怎麼能寫這個按鈕,直接顯示我的家庭屏幕,而不是首先顯示我的活動名稱? – 2012-01-05 20:35:58

+0

添加一個偵聽器,用於在您單擊按鈕後關閉您的活動。我編輯了答案以顯示一個簡短的示例。以同樣的方式添加一個'OnCancelListener',以防你的對話被後退按鈕取消。 – 2012-01-05 20:40:39

+0

thx工程! – 2012-01-05 20:44:30

1

您錯過的一件事是在AlertBuilder生成的對話框中調用show()

UPDATE

如果我理解你正確地你不想活動採取屏幕的控制而只是顯示對話框?

如果是這種情況,我認爲這是不可能的,您可以創建類似效果的唯一方法是使用Toast消息。這可以從您的服務啓動,你根本不需要這項活動。

+0

謝謝!你能否看看我對其他答案的評論? – 2012-01-05 20:36:34