7

作業中のホームスクリーンウィジェットを開始するときに、ユーザーにユーザー名を定義させたいです。しかし、ウィジェットにこの値を保存してアクセスするのに問題があります。私が現在行っていることは、ウィジェットの作成時に開始される構成アクティビティを作成することです。したがって、マニフェスト ファイルで次のように定義しました (widgetprovider.xml でも定義しました)。

    <activity android:name=".ExampleAppWidgetConfigure">
       <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
       </intent-filter>
    </activity>

次に、構成アクティビティにより、ユーザーSharedPreferencesはウィジェットのに保存されるユーザー名を入力できます。

    SharedPreferences.Editor prefs = context.getSharedPreferences(PREFS_NAME, MODE_WORLD_READABLE).edit();
    prefs.putString("username", text);
    prefs.commit();

私の質問は、この値にどのようにアクセスするのですか? 私のウィジェットクラスでは、次のようなインスタンス変数が必要です:

final String userName = ...; //load the username here.

しかし、ウィジェットでユーザー名を取得するにはどうすればよいですか? 問題は、ウィジェットがのサブクラスでありAppWidgetProvider、そこからアクセスできないことですSharedPreferences(AppWidgetProviderのサブクラスではないためContext)。ユーザー名をstrings.xmlファイルに保存することも考えましたが、これも可能ではないようです。SharedPreferences正しい方法を使用していますか?TextViewまた、後でユーザー名を表示することになっているウィジェットのユーザー名を設定することも考えました。しかし、いくつかのサーバー要求のためにクラスでユーザー名が必要であり、ウィジェットで a のテキストを取得する方法がないようTextViewです...セッターのみsetTextViewText(String text)が定義されています。

ユーザー名を取得するにはどうすればよいですか?

4

1 に答える 1

13

コンテキストから SharedPreferences インスタンスを取得する必要があります。これは、ウィジェット プロバイダーの onUpdate() メソッドで提供されます。このようなもの:

    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME,0);
}
于 2011-04-03T02:58:41.837 に答える