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