2

単一のウィジェットの追加を許可したいのですが、ブール値のフラグを設定しようとしましたが、次のようになりました。

WidgetConfig の内部:

public final static String ADDED_KEY = "IsAdded";
public static boolean isAdded = false;

onCreate (WidgetConfig 内)

isAdded = prefs.getBoolean(ADDED_KEY, false);       
    if (isAdded){
        Toast.makeText(this.getApplicationContext(), "Only one Widget", Toast.LENGTH_SHORT).show();
        finish();
    }
 [...]
editor.putBoolean(ADDED_KEY, true); //disable adding here
editor.commit();

内部 WidgetProvider は AppWidgetProvider を拡張します

public void onDisabled(Context context) {

    super.onDisabled(context);
    [...]
//cancel alarm
   configEditor.putBoolean(WidgetConfig.ADDED_KEY, false); //enable adding here
    configEditor.commit();
}

public void onDeleted(Context context, int[] appWidgetIds){
super.onDeleted(context, appWidgetIds);
//I should not need this if there is only one widget
}

しかし、常に機能するとは限りません。どのようにできるのか?ありがとう

4

1 に答える 1

0

追加したウィジェットの ID を AppWidgetManager から直接取得し、構成アクティビティに既に追加されているウィジェットの数を確認します。

int[] ids = AppWidgetManager.getInstance(getApplicationContext()).getAppWidgetIds(
            new ComponentName(getApplicationContext(), YOUR_WIDGET.class));

    if(ids.length > 0){
        //do not add the widget
    }else{
        //add the widget
    } 

これは、ウィジェットのインスタンスがあるかどうかを確認するために通常行うことです。

于 2013-10-02T07:19:13.603 に答える