输入appwidget [英] Input in 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 usesetOnClickPendingIntent
method fromRemoteViews
, but I don't want that! Is there any alternative ways ? P.S. When i'm trying to registeronClick
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
, andStackView
. For those, you can provide anotherPendingIntent
that will be invoked when items in the list (or grid or stack) are clicked. This will work similarly tosetOnClickPendingIntent()
.这篇关于输入appwidget的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!