Ввод в appwidget - PullRequest
       23

Ввод в appwidget

2 голосов
/ 10 октября 2011

Каков наилучший способ получения ввода от appwidget.Я знаю, что могу использовать setOnClickPendingIntent метод из RemoteViews, но я этого не хочу!Есть ли альтернативные способы?PS Когда я пытаюсь зарегистрировать onClick слушателя в XML (<ImageView android:onClick="myHandler" ... />), возникает исключение.

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

1 Ответ

0 голосов
/ 10 октября 2011

Я знаю, что могу использовать метод setOnClickPendingIntent из RemoteViews, но я не хочу этого!

У вас нет выбора.Это единственный вариант ввода с помощью API Level 10 (Gingerbread).

Для API Level 11 и выше (Honeycomb и т. Д.) Вы можете создавать виджеты приложений, содержащие ListView, GridView и StackView.Для них вы можете указать еще один PendingIntent, который будет вызываться при нажатии элементов в списке (или в сетке, или в стеке).Это будет работать аналогично setOnClickPendingIntent().

...