I have a button inside Android widget, declared like this:
<Button android:id="@+id/newWorkBtnWidget"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/ts_on_repair"/>
Every time I try to enable or disable this button via RemoteViews I get an error android.widget.RemoteViews$ActionException: view: android.widget.Button can't use method with RemoteViews: setEnabled(boolean)
My code:
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
R.layout.widget);
remoteViews.setInt(R.id.newWorkBtnWidget, "setBackgroundResource",
R.drawable.green_button);
remoteViews.setBoolean(R.id.newWorkBtnWidget,
"setEnabled", false);
How to fix it?
I had same problem recently, and I found that remoteView.setBoolean() with methodname 'setEnabled' doesn't work either.
use
remoteViews.setBoolean(R.id.textView_life_id, "setEnabled", true);
will get error like this
W/AppWidgetHostView: updateAppWidget couldn't find any view, using error view
android.widget.RemoteViews$ActionException: view: android.widget.TextView can't use method with RemoteViews: setEnabled(boolean)
at android.widget.RemoteViews$ReflectionAction.apply(RemoteViews.java:1134)
at android.widget.RemoteViews.performApply(RemoteViews.java:2304)
at android.widget.RemoteViews.apply(RemoteViews.java:2263)
at android.appwidget.AppWidgetHostView.updateAppWidget(AppWidgetHostView.java:402)
at com.android.launcher2.LauncherAppWidgetHostView.updateAppWidget(LauncherAppWidgetHostView.java:54)
at android.appwidget.AppWidgetHost.updateAppWidgetView(AppWidgetHost.java:434)
at android.appwidget.AppWidgetHost$UpdateHandler.handleMessage(AppWidgetHost.java:102)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:138)
at android.app.ActivityThread.main(ActivityThread.java:5089)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
finally I found the answer is that only method in SDK with @android.view.RemotableViewMethod can be used in remoteview.
like
@android.view.RemotableViewMethod
public final void setText(CharSequence text) {
setText(text, mBufferType);
}
then you can use views.setCharSequence(R.id.textView, "setText", "Test");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With