2011-08-02 10 views
0

ホーム画面にウィジェットのインスタンスを1つ以上追加してすべて削除し、別のインスタンスを追加するときに問題があります。私はALLインスタンスを削除し、1を追加したときにここでAppウィジェットがすべてのインスタンスが削除され、別のインスタンスが削除された後に入力に応答しなくなる

が、私は各ボタンの「onClickの」意図を設定するために使用するコードは

protected void matchButtonToAction(Context context, RemoteViews views, String action, int button) { 
    Intent intent = new Intent(context, MightyToggleWidget.class); 
    intent.setAction(action); 

    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0); 
    views.setOnClickPendingIntent(button, pendingIntent); 
} 

(ボタンがリソースである)であるにのみ発生します。私は2を追加する場合は、1を削除し、1を追加しても動作します。

まだ、これを引き起こしていることができるもの(例えば無線LANの状態変更イベントなど)他のイベント

の任意のアイデア受信し、バッテリーのイベントに反応しますが、ないですか? ありがとう!

答えて

0

私はこの問題を発見しました。 onEnabledイベントは、最初のウィジェットが追加されたときに開始時にトリガーされます。最後のウィジェットが削除されたときにonDisabledイベントがトリガーされますが、別の「最初の」ウィジェットを追加しようとするとonEnabledイベントがトリガーされません。

私は、これらのイベントの例と同様のコードを持っていました。これは私が設定アクティビティがPackageManagerを呼び出して、新しいインスタンスを追加するときに呼び出される静的メソッドを追加したこれらのイベント

@Override 
public void onEnabled(Context context) { 
    PackageManager pm = context.getPackageManager(); 
    pm.setComponentEnabledSetting(new ComponentName(context.getPackageName(), getClass().getName()), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); 
} 

@Override 
public void onDisabled(Context context) { 
    PackageManager pm = context.getPackageManager(); 
    pm.setComponentEnabledSetting(new ComponentName(context.getPackageName(), getClass().getName()), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 
} 

を受けてから、私のAppWidgetProviderを登録解除packagemanagerになりました。もし誰かが役に立つと思ったらコードはここにあります

public static void newInstanceAdded(Context context, AppWidgetManager appWidgetManager, RemoteViews views, SharedPreferences prefs, int id){ 

    ComponentName thisAppWidget = new ComponentName(context, MightyToggleWidget.class); 
    int ids[] = appWidgetManager.getAppWidgetIds(thisAppWidget); 

    if (ids.length == 1){ 
     PackageManager pm = context.getPackageManager(); 
     pm.setComponentEnabledSetting(new ComponentName(context.getPackageName(), MightyToggleWidget.class.getName()), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); 
    } 

    updateWidgetInstance(context, appWidgetManager, views, prefs, id); 
} 

私はこれが役に立ちます!

関連する問題