0

データベースからユーザーのデータを表示するウィジェットを作成しています。データの 1 つは、設定アクティビティで設定できるパラメーターに依存しています。このパラメーターを sharedpreferences で保存して、コードのどこでも使用できるようにします。アクティビティでは getApplicationContext を使用できますが、ここでウィジェットに何をすべきかを伝えると、うまくいきません。getApplicationContext の代わりに何を使用すればよいですか?

更新しました

public class plWidget extends AppWidgetProvider{

    SharedPreferences sharedPreferences;
     String loadedWeightType;

    @Override
    public void onDeleted(Context context, int[] appWidgetIds) {
        // TODO Auto-generated method stub
        super.onDeleted(context, appWidgetIds);
        Toast.makeText(context, "deleted", 2500).show();
    }

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
            int[] appWidgetIds) {
        // TODO Auto-generated method stub
        super.onUpdate(context, appWidgetManager, appWidgetIds);

         String Wcal="0",Wfat="0",Wprot="0",Wcarb="0",Wsport="0";

         final int N = appWidgetIds.length;

         for (int i = 0;i<N;i++)
        {
            int awID = appWidgetIds[i];
            updateAppWidget(context, appWidgetManager, appWidgetIds[i]);

            GlobalVars.setSulyType(loadedWeightType);           
        Log.i("SULYYYY", GlobalVars.getSulyType());

        long now = System.currentTimeMillis();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        Date resultdate = new Date(now);
        Log.i("ASAS", sdf.format(resultdate));


        hornot database = new hornot(context);
        database.open();



         int ccc = database.checkDataExists(sdf.format(resultdate), sdf.format(resultdate));
        if (ccc==0){
            Log.i("nulla", "0");
            Log.i("nulla", GlobalVars.getSulyType());

            Wcal="0";
            Wfat="0";
            Wprot="0";
            Wcarb="0";
        }

        else{

        database.getDateFromAndToFromDatePicker(sdf.format(resultdate), sdf.format(resultdate));
         Wcal = GlobalVars.getSums();

        database.FATgetDateFromAndToFromDatePicker(sdf.format(resultdate), sdf.format(resultdate));
         Wfat = GlobalVars.getSums();

        database.PROTEINgetDateFromAndToFromDatePicker(sdf.format(resultdate), sdf.format(resultdate));
         Wprot = GlobalVars.getSums();

        database.CARBSgetDateFromAndToFromDatePicker(sdf.format(resultdate), sdf.format(resultdate));
         Wcarb = GlobalVars.getSums();

                }

        int ddd = database.checkDataExistsSports(sdf.format(resultdate), sdf.format(resultdate));
        if (ddd==0){
            Wsport="0";

        }
        else{

            if (loadedWeightType.equals("kilogramm"))
                    {
            database.SportgetDateFromAndToFromDatePicker(sdf.format(resultdate), sdf.format(resultdate));
            // Wsport = GlobalVars.getSums();
             Wsport= "kilogramm";


                    }
            else if (loadedWeightType.equals("pound"))
                    {
            database.SportgetDateFromAndToFromDatePicker(sdf.format(resultdate), sdf.format(resultdate));
            Wsport="pound";
                    }

        }

        RemoteViews v = new RemoteViews(context.getPackageName(), R.layout.widget);
        v.setTextViewText(R.id.tvwidgetUpdate, Wcal+Wfat+Wprot+Wcarb+Wsport);
        appWidgetManager.updateAppWidget(awID, v);
        database.close();



        }


    }

    public void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) { 
        SharedPreferences prefs = context.getSharedPreferences(plWidget.class + Integer.toString(appWidgetId),
                Context.MODE_WORLD_READABLE);
         loadedWeightType= prefs.getString("weighttype", "kilogramm");
    }

}

前もって感謝します!

アップデート

いつものように、ロード機能を実行します。

 public void LoadWeightType(){
        sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        loadedWeightType= sharedPreferences.getString("weighttype", "kilogramm");
      }

これを通常のアクティビティで使用すると、weighttype をロードできます。updateAppWidget 関数が何らかの形でこの関数を置き換える必要があると思います。

4

1 に答える 1

1
public static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {
SharedPreferences prefs = context.getSharedPreferences(MyConfigActivity.NAME + Integer.toString(appWidgetId), Context.MODE_WORLD_READABLE);

ウィジェットのインスタンスごとに onUpdate から updateAppWidget を呼び出し、パラメーターを渡します。渡された Context には getSharedPreferences が定義されており、構成アクティビティの名前とウィジェットの ID に基づいて取得する設定のセットを指定します。getSharedPreferences 関数の SDK リファレンスは次のとおりです: http://developer.android.com/reference/android/content/Context.html#getSharedPreferences%28java.lang.String,%20int%29

于 2012-05-07T22:24:05.867 に答える