В настоящее время я динамически добавляю элементы в мой виджет, используя следующее:
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_design);
RemoteViews newView = new RemoteViews(context.getPackageName(), R.layout.widget_item);
views.addView(R.id.view_container, newView);
, но как я могу динамически добавлять поля, веса и другие свойства для добавленных элементов?
в настоящее время я пытался (используя код, который я нашел с разных сайтов):
LinearLayout item = (LinearLayout) ((Activity) context).findViewById(R.id.widgetItem);
MarginLayoutParams marginParams = new MarginLayoutParams(item.getLayoutParams());
marginParams.setMargins(10, 50, 4, 5);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(marginParams);
item.setLayoutParams(layoutParams);
, но это принудительно закрывает
LogCat:
09-1022: 01: 55.283: ОШИБКА / AndroidRuntime (30060): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: главная 09-10 22: 01: 55.283: ОШИБКА / AndroidRuntime (30060): java.lang.RuntimeException: Невозможно запустить приемник com.example.test.HomeWidget: java.lang.ClassCastException: android.app.ReceiverRestrictedContext 09-10 22: 01: 55.283: ОШИБКА / AndroidRuntime (30060): в android.app.ActivityThread.handleReceiver (ActivityThread.java:2821) 09-10 22:01:55.283: ОШИБКА / AndroidRuntime (30060): на android.app.ActivityThread.access $ 3200 (ActivityThread.java:125) 09-10 22: 01: 55.283: ОШИБКА / AndroidRuntime (30060): на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:2083) 09-10 22: 01: 55.283: ОШИБКА / AndroidRuntime (30060): на android.os.Handler.dispatchMessage (Handler.java:99) 09-10 22: 01: 55.283: ОШИБКА / AndroidRuntime (30060): на android.os.Looper.loop (Looper.java: 123) 09-10 22: 01: 55.283: ОШИБКА / AndroidRuntime (30060): на android.app.ActivityThread.main (ActivityThread.java:4627) 09-10 22: 01: 55.283: ОШИБКА / AndroidRuntime (30060): at java.lang.reflect.Method.invokeNative (собственный метод) 09-10 22: 01: 55.283: ОШИБКА / AndroidRuntime (30060): at java.lang.reflect.Method.invoke (Method.java:521) 09-10 22: 01: 55.283: ОШИБКА / AndroidRuntime (30060): на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:858) 09-10 22: 01: 55.283: ОШИБКА / AndroidRuntime (30060): at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616) 09-10 22: 01: 55.283: ОШИБКА / AndroidRuntime (30060): в dalvik.system.NativeStart.main (собственный метод) 09-10 22: 01: 55.283: ОШИБКА / AndroidRuntime (30060): вызвано: java.lang.ClassCastException: android.app.ReceiverRestrictedContext 09-10 22: 01: 55.283: ОШИБКА / AndroidВремя выполнения (30060): на com.example.test.HomeWidget.onUpdate (HomeWidget.java:37) 09-10 22: 01: 55.283: ОШИБКА / AndroidRuntime (30060): на android.appwidget.AppWidgetProvider.onReceive (AppWidgetProvider.java: 61) 09-10 22: 01: 55.283: ОШИБКА / AndroidRuntime (30060): на android.app.ActivityThread.handleReceiver (ActivityThread.java:2810) 09-10 22: 01: 55.283: ОШИБКА / AndroidRuntime (30060):... еще 10