2011-04-26 38 views
5

我有一個簡單的小部件(Android 2.1的)僅包含的LinearLayout,它本身含有的ImageButton。 ImageButton具有點擊式偵聽器。 的問題是:如果我把這個幾個小部件一樣的我的主屏幕上,有些工作(偵聽器時按下按鈕調用),有的都沒有!我看不到任何工作模式,哪些不是。窗口小部件的ImageButton聽者不叫百達

這裏是小部件佈局:

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:background="@null"> 

<ImageButton 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/ImageButton01" 
    android:src="@drawable/widget_running" 
    android:background="@null"> 
</ImageButton> 

這裏是控件提供者的代碼:

public class GPAppWidgetProvider extends AppWidgetProvider { 
private String mTag = getClass().getSimpleName(); 

@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
    final int N = appWidgetIds.length; 
    Log.e(mTag, "onUpdate "); 

    // Perform this loop procedure for each App Widget that belongs to this 
    // provider 
    for (int i = 0; i < N; i++) { 
     Log.e(mTag, "widget onUpdate one loop"); 
     int appWidgetId = appWidgetIds[i]; 

     // Create an Intent 
     Intent intent = new Intent(context, GPService.class).setAction(ACTION_WIDGET_TOGGLE_PAUSE); 
     intent.putExtra("widgetId", appWidgetId); 
     PendingIntent pauseIntent = PendingIntent.getService(context, 0, intent, 0); 

     RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.gp_appwidget); 
     views.setOnClickPendingIntent(R.id.ImageButton01, pauseIntent); 

     // widget update 
     appWidgetManager.updateAppWidget(appWidgetId, views); 
    } 
} 

}

+0

更新:看來,如果我重新啓動手機或應用程序,然後所有的部件都工作......但如果我增加新的部件,大部分的時間,他們將無法正常工作,直到我重新啓動手機或重新啓動應用程序... – Gael 2011-04-26 13:46:34

+0

我也遇到過這種情況,一旦我添加主屏幕小部件,它不會立即將監聽器附加到按鈕上。我必須運行服務/通過主頁圖標啓動應用程序來觸發更新。 – Joset 2011-08-07 01:43:43

回答

0

我有同樣的問題。

不要忘記設置不同的「requestCode」當你打電話「的getService」:

public static PendingIntent getService (Context context, int requestCode, Intent intent, int flags) 

,並確保您「appWidgetId」是每個插件不同。

相關問題