触摸Android Live壁纸时打开对话框
-
30-09-2019 - |
题
我想打开一个对话框,并在实时壁纸拍摄时,上面有一些简单的信息。在Android Live墙纸中覆盖Oncommand,并在Android文档中直接添加一个自定义对话框(没有显示Layout 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)
我假设这是因为我试图从壁纸服务中提高对话框,而不是从活动中提出对话框。覆盖壁纸服务。
这是否意味着我需要旋转单独的活动来托管对话框?还是无法从实时壁纸触发对话框?
解决方案
这是否意味着我需要旋转单独的活动来托管对话框?
是的。或者,更好的是,使用以对话为主题的活动。
就个人而言,如果您期望为您的整个实时壁纸做到这一点,我希望您会在市场上获得一大堆一星级评级,因为我怀疑当您的活动/对话框不断弹出时,用户会感到恼火他们在主屏幕上误会了。
不隶属于 StackOverflow