Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在SharedReference更改时更新TextView?_Android_Sharedpreferences - Fatal编程技术网

Android 如何在SharedReference更改时更新TextView?

Android 如何在SharedReference更改时更新TextView?,android,sharedpreferences,Android,Sharedpreferences,我一直在尝试下面的方法来更新对SharedReference所做的任何更改,但是我很难想出下一步该怎么做。有人吗?:) 您没有注册OnPreferenceChangedListener。在onCreate中调用userInfo.registeronSharedReferenceChangeListener(this),它应该可以工作。您在任何时候都不会将SharedReferenceChangedListener添加到您的SharedReference中 试试这个: userInfo.reg

我一直在尝试下面的方法来更新对SharedReference所做的任何更改,但是我很难想出下一步该怎么做。有人吗?:)


您没有注册OnPreferenceChangedListener。在
onCreate
中调用
userInfo.registeronSharedReferenceChangeListener(this)
,它应该可以工作。

您在任何时候都不会将SharedReferenceChangedListener添加到您的SharedReference中

试试这个:

  userInfo.registerOnSharedPreferenceChangeListener(this);
仅在实例化userInfo对象之后。

仅供尝试

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"));
    }

}

您错过了在共享首选项chnaged()上注册。。!
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"));
    }

}