2012-02-22 154 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

在任何時候您都不會將sharedPreferenceChangedListener添加到您的sharedPreferences中。

試試這個:

userInfo.registerOnSharedPreferenceChangeListener(this); 

你實例化對象的用戶信息剛過。

4

您沒有註冊OnPreferenceChangedListener。請致電userInfo.registerOnSharedPreferenceChangeListener(this)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 2012-02-22 12:55:22