繁体   English   中英

触摸Android动态壁纸时打开对话框

[英]Opening a dialog when an Android live wallpaper is touched

点击动态壁纸时,我想打开一个对话框,其中包含一些简单的信息。 覆盖Android动态壁纸中的onCommand,并添加一个几乎直接来自Android文档的自定义对话框(未显示布局info_dialog.xml):

@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)

我假设这是因为我正在尝试从WallpaperService而不是从Activity引发对话框。 重写WallpaperService.Engine的onTouchEvent方法只会得到相同的结果。

这是否意味着我需要启动一个单独的“活动”来托管对话框? 还是无法从动态桌布触发对话?

这是否意味着我需要启动一个单独的“活动”来托管对话框?

是。 或者,更好的是,使用对话主题的活动。

就个人而言,如果您希望对整个动态壁纸都这样做,那么我希望您在Market上能获得一整星级的评价,因为我怀疑当您的活动/对话框不断弹出时,用户会感到恼火,原因仅在于他们在主屏幕上点击不正确。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM