2011-03-03 7 views
4

저는 홈 화면 위젯을 시작할 때 사용자가 사용자 이름을 정의 할 수있게하려고합니다. 하지만 내 위젯에이 값을 저장하고 액세스하는 데 문제가 있습니다. 지금 내가하는 일은 위젯을 만들 때 시작되는 구성 활동을 만드는 것입니다.SharedPreferences를 사용하는 Android 위젯 구성

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

[구성 활동 후 위젯 SharedPreferences에 저장 될 사용자 이름을 입력하도록 허용 다음과 같다 : 그러므로 나는 (나는 또한 widgetprovider.xml에 정의) 매니페스트 파일에 정의 된 :

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에 액세스 할 수 없기 때문입니다 (AppWidgetProviderContext의 하위 클래스가 아니기 때문에). 나는 strings.xml 파일에 사용자 이름을 저장하는 것에 대해서도 생각했다. SharedPreferences을 올바르게 사용하고 있습니까? 나 또한 사용자 이름을 표시하기로되어있는 위젯의 TextView으로 사용자 이름을 설정하는 방법에 대해 생각했습니다. 그러나 일부 서버 요청에 대한 클래스에서 사용자 이름이 필요하고 위젯에 TextView 텍스트를 가져올 방법이없는 것 같습니다 ... 설정자 setTextViewText(String text)이 정의되어 있습니다.

어떻게 사용자 이름을 검색 할 수 있습니까?

답변

7

위젯 공급자의 onUpdate() 메소드에서 제공되는 컨텍스트에서 SharedPreferences 인스턴스를 얻어야합니다. 다음과 같은 내용 :

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME,0); 
}