2010-12-02 9 views
0

ライブ壁紙をタップすると、簡単な情報が表示されたダイアログボックスを開きたいと思います。 Androidのライブ壁紙でオンデマンドのオーバーライド、ほぼストレート(図示せずレイアウトinfo_dialog.xml付き)Androidのドキュメントのうち、カスタムダイアログを追加:Androidライブ壁紙に触れたときにダイアログを開く

@Override 
public Bundle onCommand (String action, int x, int y, int z, Bundle extras, boolean resultRequested) 
{ 
System.out.println(action); 
Context mContext = getApplicationContext(); 
Dialog dialog = new Dialog(mContext); 

dialog.setContentView(R.layout.info_dialog); 
dialog.setTitle("Custom Dialog"); 

TextView text = (TextView) dialog.findViewById(R.id.text); 
text.setText("Hello, this is a custom dialog!"); 

dialog.show(); 

return null 
}  

だけ例外が発生します

12-02 07:14:40.880: ERROR/AndroidRuntime(295): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application 
12-02 07:14:40.880: ERROR/AndroidRuntime(295):  at android.view.ViewRoot.setView(ViewRoot.java:509) 

12-02 07:14:40.880: ERROR/AndroidRuntime(295):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177) 

12-02 07:14:40.880: ERROR/AndroidRuntime(295):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 

12-02 07:14:40.880: ERROR/AndroidRuntime(295):  at android.app.Dialog.show(Dialog.java:241) 

これは、Activityからではなく、WallpaperServiceからダイアログを生成しようとしているためです。 WallpaperService.EngineのonTouchEventメソッドをオーバーライドすると、同じ結果が得られます。

これは、ダイアログをホストする別のアクティビティをスピンアップする必要があることを意味しますか?または、ライブ壁紙からダイアログを起動できませんか?

答えて

1

これは、ダイアログをホストする別のアクティビティをスピンアップする必要があることを意味しますか?

はい。あるいは、より良いことに、ダイアログをテーマにしたアクティビティを使用することもできます。

個人的には、ライブ壁紙全体でこれを行う予定がある場合は、マーケットで1つ星の評価を得ることが期待されます。あなたのアクティビティやダイアログが邪魔になる彼らはホーム画面で誤ってタップしているためにポップアップします。

+0

1 /音が良い、私はダイアログをテーマにした活動を見ていきます。 –

+0

2 /それは私を怒らせるだろう。良い点:)私はあなたが*特定のタップ可能な領域を持つことができると思いますが、それでも.. –

+0

3 /ライブ壁紙に関する情報を提供するために受け入れられる方法は何ですか?壁紙設定の[概要]オプションのようなもの? –

関連する問題