2015-02-21 16 views
5

devre dışı bırakılamaz, bu gibi bildirilen:Ben Android widget'ı içinde bir düğme vardır android.widget.Button

<Button android:id="@+id/newWorkBtnWidget" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="@string/ts_on_repair"/> 

ben etkinleştirmek veya bir hata alıyorum RemoteViews aracılığıyla bu düğmeye devre dışı bırakmayı deneyin her zaman android.widget.RemoteViews$ActionException: view: android.widget.Button can't use method with RemoteViews: setEnabled(boolean)

Kodum:

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); 

Nasıl düzeltmek için?

+0

Eh, nedir, 'newWorkBtnWidget' veya' newWorkButtWidget'? – eightx2

+0

Üzgünüm, bu aynı düğme olmalı, sabit. Her neyse, bu sorunla ilgili değil. – bvk256

cevap

1

Son zamanlarda aynı sorunu yaşadım ve remoteView.setBoolean() yönteminin 'setEnabled' yöntemiyle çalışmadığını da buldum.

kullanım

remoteViews.setBoolean(R.id.textView_life_id, "setEnabled", true); 

bu

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) 

gibi nihayet cevap @ android.view.RemotableViewMethod ile SDK'sinde yöntem RemoteView'in kullanılabilir olmasıdır bulundu hatası alırsınız.

@android.view.RemotableViewMethod 
public final void setText(CharSequence text) { 
    setText(text, mBufferType); 
} 

gibi o zaman views.setCharSequence kullanabilirsiniz (R.id.textView, "setText", "Test");

0

Geleneksel anlamda etkin/devre dışı özelliğini kullanamazsınız, ancak Düğme'yi devre dışı bırakılmış görünüme sahip olacak şekilde güncelleyebilir veya "yanlış" düğmesine sahip olabilir ve bunları GONE/VISIBLE ile değiştirebilirsiniz.

+0

Şaşkınım, çünkü web listesindeki bir kaç kaynak, bir olasılık olarak devre dışı bırakma yöntemiyle, örn. https://stackoverflow.com/a/15413357/685948 – bvk256

İlgili konular