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