首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

桌面小部件旋转屏后失效有关问题

2012-09-07 
桌面小部件旋转屏后失效问题ppWidgetProvider@Overridepublic void onReceive(Context context, Intent in

桌面小部件旋转屏后失效问题

ppWidgetProvider@Overridepublic void onReceive(Context context, Intent intent)    {    super.onReceive(context, intent);    if(intent.getAction().equals("test.CLICK"))    {        CallTestMethod(context);    }}@Overridepublic 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);}

?上述代码在旋转屏后失效,解决办法是

@Overridepublic void onReceive(Context context, Intent intent) ? ?{? ? super.onReceive(context, intent);? ? if(intent.getAction().equals("test.CLICK"))? ? {? ? ? ? getIntent().putExtra("Just received click", true);? ? ? ? CallTestMethod(context);? ? }}

或者呢 如下使用

@Override?public void onUpdate(Context context, AppWidgetManager appWidgetManager,? ?int[] appWidgetIds) {? context.startService(new Intent(context, MyUpdateService.class));?}

public static class MyUpdateService extends Service ?{ ? @Override? public void onCreate() {? ?super.onCreate();? }? @Override? public void onDestroy() {? ?super.onDestroy();? }? @Override ? public void onStart(Intent intent, int startId) ? { ? ?super.onStart(intent, startId); ? ?// Update the widget ? ?RemoteViews remoteView = buildRemoteView(this); ? ?// Push update to homescreen ? ?pushUpdate(remoteView); ? ? ? ? ? ? ?} ? public RemoteViews buildRemoteView(Context context) ? { ? ?int layoutID = R.layout.widget;? ?if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){? ? layoutID = R.layout.widget_landscape;? ?}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //Here is where you set your onclick listeners again since the remote views need to be refreshed/recreated? ?RemoteViews updateView = new RemoteViews(context.getPackageName(),layoutID); ? ?// Create an Intent to launch ExampleActivity? ?Intent intent = new Intent(this, yourAndroidActivity.class);? ?PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,? ? ?intent, 0);? ?updateView.setOnClickPendingIntent(R.id.yourClickableViewHere, pendingIntent);? ?return updateView; ? } ? @Override ? public void onConfigurationChanged(Configuration newConfig) ? { ? ?RemoteViews remoteView = buildRemoteView(this); ? ? // Push update to home screen ? ?pushUpdate(remoteView); ? } ? private void pushUpdate(RemoteViews updateViews) ? { ? ?ComponentName myWidget = new ComponentName(this, YourAppWidgetbackground-color: transparent; margin: 0px; color: #000000; font-size: 14px; vertical-align: bas 

热点排行