输入appwidget [英] Input in appwidget

查看:165
本文介绍了输入appwidget的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

什么是从 appwidget 输入获得的最佳途径。我知道,我可以使用 setOnClickPendingIntent 方法从 RemoteViews ,但我不希望出现这种情况!有没有其他方法?
附:当我试图以XML(&LT注册的onClick 监听; ImageView的机器人:的onClick =将myHandler... /> ),这是抛出一个异常。

  W / AppWidgetHostView(178):android.view.InflateException:二进制XML文件行#11:错误充气类android.widget.Button
W / AppWidgetHostView(178):在android.view.LayoutInflater.createView(LayoutInflater.java:513)
W / AppWidgetHostView(178):在com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
W / AppWidgetHostView(178):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
W / AppWidgetHostView(178):在android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
W / AppWidgetHostView(178):在android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
W / AppWidgetHostView(178):在android.view.LayoutInflater.inflate(LayoutInflater.java:407)
W / AppWidgetHostView(178):在android.view.LayoutInflater.inflate(LayoutInflater.java:320)
W / AppWidgetHostView(178):在android.widget.RemoteViews.apply(RemoteViews.java:900)
W / AppWidgetHostView(178):在android.appwidget.AppWidgetHostView.updateAppWidget(AppWidgetHostView.java:208)
W / AppWidgetHostView(178):在com.htc.launcher.LauncherAppWidgetHostView.updateAppWidget(LauncherAppWidgetHostView.java:116)
W / AppWidgetHostView(178):在android.appwidget.AppWidgetHost.updateAppWidgetView(AppWidgetHost.java:243)
W / AppWidgetHostView(178):在android.appwidget.AppWidgetHost $ UpdateHandler.handleMessage(AppWidgetHost.java:72)
W / AppWidgetHostView(178):在android.os.Handler.dispatchMessage(Handler.java:99)
W / AppWidgetHostView(178):在android.os.Looper.loop(Looper.java:123)
W / AppWidgetHostView(178):在android.app.ActivityThread.main(ActivityThread.java:4595)
W / AppWidgetHostView(178):在java.lang.reflect.Method.invokeNative(本机方法)
W / AppWidgetHostView(178):在java.lang.reflect.Method.invoke(Method.java:521)
W / AppWidgetHostView(178):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:860)
W / AppWidgetHostView(178):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
W / AppWidgetHostView(178):在dalvik.system.NativeStart.main(本机方法)
W / AppWidgetHostView(178):java.lang.reflect.InvocationTargetException:产生的原因
W / AppWidgetHostView(178):在android.widget.Button<&初始化GT;(Button.java:65)。
W / AppWidgetHostView(178):在java.lang.reflect.Constructor.constructNative(本机方法)
W / AppWidgetHostView(178):在java.lang.reflect.Constructor.newInstance(Constructor.java:446)
W / AppWidgetHostView(178):在android.view.LayoutInflater.createView(LayoutInflater.java:500)
W / AppWidgetHostView(178):19 ...更多
W / AppWidgetHostView(178):java.lang.IllegalStateException:由此造成的机器人:onclick属性不能限制上下文中使用
W / AppWidgetHostView(178):在android.view.View<&初始化GT;(View.java:2005)。
W / AppWidgetHostView(178):在android.widget.TextView<&初始化GT;(TextView.java:335)。
W / AppWidgetHostView(178):在android.widget.Button<&初始化GT;(Button.java:69)。
W / AppWidgetHostView(178):23 ...更多


解决方案

  

我知道,我可以使用setOnClickPendingIntent方法从RemoteViews,但我不想这样!


您没有选择。它是通过API等级10(姜饼),你唯一的输入选项。

有关API等级11及更高版本(蜂窝等),您可以创建应用程序部件包含的ListView GridView控件 StackView 。针对这一情况,您可以提供另一个的PendingIntent 被点击列表中的(或网格或堆栈)项目时将被调用。这将可替代 setOnClickPendingIntent()

What's the best way of getting input from appwidget. I know that I can use setOnClickPendingIntent method from RemoteViews, but I don't want that! Is there any alternative ways ? P.S. When i'm trying to register onClick listener in Xml (<ImageView android:onClick="myHandler" ... />) it's throws an exception.

W/AppWidgetHostView(  178): android.view.InflateException: Binary XML file line #11: Error inflating class android.widget.Button
W/AppWidgetHostView(  178):     at android.view.LayoutInflater.createView(LayoutInflater.java:513)
W/AppWidgetHostView(  178):     at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
W/AppWidgetHostView(  178):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
W/AppWidgetHostView(  178):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
W/AppWidgetHostView(  178):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
W/AppWidgetHostView(  178):     at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
W/AppWidgetHostView(  178):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
W/AppWidgetHostView(  178):     at android.widget.RemoteViews.apply(RemoteViews.java:900)
W/AppWidgetHostView(  178):     at android.appwidget.AppWidgetHostView.updateAppWidget(AppWidgetHostView.java:208)
W/AppWidgetHostView(  178):     at com.htc.launcher.LauncherAppWidgetHostView.updateAppWidget(LauncherAppWidgetHostView.java:116)
W/AppWidgetHostView(  178):     at android.appwidget.AppWidgetHost.updateAppWidgetView(AppWidgetHost.java:243)
W/AppWidgetHostView(  178):     at android.appwidget.AppWidgetHost$UpdateHandler.handleMessage(AppWidgetHost.java:72)
W/AppWidgetHostView(  178):     at android.os.Handler.dispatchMessage(Handler.java:99)
W/AppWidgetHostView(  178):     at android.os.Looper.loop(Looper.java:123)
W/AppWidgetHostView(  178):     at android.app.ActivityThread.main(ActivityThread.java:4595)
W/AppWidgetHostView(  178):     at java.lang.reflect.Method.invokeNative(Native Method)
W/AppWidgetHostView(  178):     at java.lang.reflect.Method.invoke(Method.java:521)
W/AppWidgetHostView(  178):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
W/AppWidgetHostView(  178):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
W/AppWidgetHostView(  178):     at dalvik.system.NativeStart.main(Native Method)
W/AppWidgetHostView(  178): Caused by: java.lang.reflect.InvocationTargetException
W/AppWidgetHostView(  178):     at android.widget.Button.<init>(Button.java:65)
W/AppWidgetHostView(  178):     at java.lang.reflect.Constructor.constructNative(Native Method)
W/AppWidgetHostView(  178):     at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
W/AppWidgetHostView(  178):     at android.view.LayoutInflater.createView(LayoutInflater.java:500)
W/AppWidgetHostView(  178):     ... 19 more
W/AppWidgetHostView(  178): Caused by: java.lang.IllegalStateException: The android:onClick attribute cannot be used within a restricted context
W/AppWidgetHostView(  178):     at android.view.View.<init>(View.java:2005)
W/AppWidgetHostView(  178):     at android.widget.TextView.<init>(TextView.java:335)
W/AppWidgetHostView(  178):     at android.widget.Button.<init>(Button.java:69)
W/AppWidgetHostView(  178):     ... 23 more

解决方案

I know that I can use setOnClickPendingIntent method from RemoteViews, but I don't want that!

You do not have a choice. It is your only input option through API Level 10 (Gingerbread).

For API Level 11 and higher (Honeycomb, etc.), you can create app widgets that contain ListView, GridView, and StackView. For those, you can provide another PendingIntent that will be invoked when items in the list (or grid or stack) are clicked. This will work similarly to setOnClickPendingIntent().

这篇关于输入appwidget的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆