我有一个非常简单的小部件应用程序,它由一个带有背景和一个ImageButton的LinearLayout组成。
在AppWidgetProvider onUpdate()方法中,我注册按钮的点击以广播意图。当小部件首次加载时,一切都运行良好,并且可以捕获单击。问题发生在屏幕旋转时,即使屏幕旋转回来,点击也永远不会再次被捕获。
当屏幕旋转时,我需要做什么才能重新注册点击事件?
以下是我正在使用的一些代码段。
AppWidgetProvider
在AppWidgetProvider onUpdate()方法中,我注册按钮的点击以广播意图。当小部件首次加载时,一切都运行良好,并且可以捕获单击。问题发生在屏幕旋转时,即使屏幕旋转回来,点击也永远不会再次被捕获。
当屏幕旋转时,我需要做什么才能重新注册点击事件?
以下是我正在使用的一些代码段。
AppWidgetProvider
@Override
public void onReceive(Context context, Intent intent)
{
super.onReceive(context, intent);
if(intent.getAction().equals("test.CLICK"))
{
CallTestMethod(context);
}
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
final int N = appWidgetIds.length;
// Perform this loop procedure for each App Widget that belongs to this provider
for (int i=0; i<N; i++) {
int appWidgetId = appWidgetIds[i];
RemoteViews views=new RemoteViews(context.getPackageName(), R.layout.widget);
Intent clickintent=new Intent("test.CLICK");
PendingIntent pendingIntentClick=PendingIntent.getBroadcast(context, 0, clickintent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.change_mode, pendingIntentClick);
SetInitialLayout(context);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
清单
<receiver android:name=".Widget" android:label="@string/widget_name">
<intent-filter>
<action android:name="android.appwidget.action.ACTION_APPWIDGET_CONFIGURE" />
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="test.CLICK" />
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_mode_switcher" />
</receiver>
布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget_layout"
android:layout_width="140dip"
android:layout_height="140dip"
android:scaleType="fitCenter"
android:orientation="vertical"
android:background="@drawable/background">
<ImageButton
android:id="@+id/change_mode"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="fitCenter"
android:orientation="vertical"
android:src="@drawable/none_selected"
android:background="@null"
android:clickable="true" />
</LinearLayout>
感谢任何人的帮助!