2012-02-22 31 views
1

私はSharedPreferenceに加えられた変更をTextviewに反映させるために以下のことを試してきましたが、私は次の動きを理解するのが難しいです。誰でも? :)SharedPreferenceが変更されるたびにTextViewを更新するにはどうすればよいですか?

public class CallForwardActivity extends Activity implements 
     OnSharedPreferenceChangeListener { 

    SharedPreferences userInfo; 
    Context context; 
    UserController userControl; 
    private static final String USERINFO_FILE = "StoredUserInfo"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.callforward); 
     context = this; 
     userInfo = this.getSharedPreferences(USERINFO_FILE, 0); 
     userControl = new UserController(context); 
     final TextView setActiveNumberTV = (TextView) 
             findViewById(R.id.activeNumberTextView); 
     setActiveNumberTV.setText(userControl.GetActiveNumber()); 
     final RelativeLayout showAvailablenumbers = (RelativeLayout) 
             findViewById(R.id.showAvailableNumbers); 
     showAvailablenumbers.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       Intent i = new Intent(getParent(), 
         AvailableNumbersActivity.class); 
       SettingsActivityGroup parentActivity = 
              (SettingsActivityGroup) getParent(); 
       parentActivity.ReplaceView(
         "Show Available Numbers Activity", i); 
      } 
     }); 
    } 

    public void onSharedPreferenceChanged(SharedPreferences arg0, 
      String arg1) { 
     final TextView setActiveNumberTV = (TextView) 
             findViewById(R.id.activeNumberTextView); 
     setActiveNumberTV.setText("..."); 
    } 
} 

答えて

2

あなたはいつでもsharedPreferencesにsharedPreferenceChangedListenerを追加しません。

はこれを試してみてください:

userInfo.registerOnSharedPreferenceChangeListener(this); 

あなたのUserInfoオブジェクトをインスタンス化した直後。

4

あなたはOnPreferenceChangedListenerを登録していません。 をonCreateに電話するとうまくいくはずです。

2

だけ試すために...

public class CallForwardActivity extends Activity implements OnSharedPreferenceChangeListener 
    { 
    SharedPreferences userInfo; 
    Context context; 
    UserController userControl; 
    private static final String USERINFO_FILE = "StoredUserInfo"; 
    private TextView setActiveNumberTV; 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.callforward); 
     context = this; 
     userInfo = this.getSharedPreferences(USERINFO_FILE, 0); 
      userInfo.registerOnSharedPreferenceChangeListener(this); 
     userControl = new UserController(context); 
     setActiveNumberTV = (TextView) findViewById(R.id.activeNumberTextView); 
     setActiveNumberTV.setText(userControl.GetActiveNumber());  
     final RelativeLayout showAvailablenumbers = (RelativeLayout) findViewById(R.id.showAvailableNumbers); 
     showAvailablenumbers.setOnClickListener(new OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       Intent i = new Intent(getParent(), AvailableNumbersActivity.class); 
       SettingsActivityGroup parentActivity = (SettingsActivityGroup)getParent(); 
       parentActivity.ReplaceView("Show Available Numbers Activity", i); 
      } 
     }); 
    } 

    public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) 
    { 
     setActiveNumberTV.setText(arg0.getString(arg1, "default")); 
    } 

} 
+0

あなたはonSharedPreferenceChnaged()を登録するには逃しました...! – user370305

関連する問題