[英]Load strings from sharedpreferences in EditText (two classes)
I have two different activity's. 我有两个不同的活动。 First one only showed to the user first time - to store phonenumber inside sharedprefs. 第一个仅是第一次向用户显示-将电话号码存储在sharedprefs中。 I think the problem is my load from prefs method but just in case I will leave everything here to make it more relevant to future users. 我认为问题是我从prefs方法加载的,但是以防万一,我将把所有内容留在这里,以使其与将来的用户更加相关。 It looks like in both activitys the "mobilnummer" is saved - but I am having problem to display them. 似乎在两个活动中都保存了“ mobilnummer”-但是我在显示它们时遇到了问题。
The idea is it to be overwritten if user updates it - I think the method will do that? 想法是如果用户更新它,它将被覆盖-我认为该方法可以做到这一点?
OnStartUp.java OnStartUp.java
public static final String PREFS_NAME = "MobileNumberSaved";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mobilnummer = (EditText) findViewById(R.id.mobilnummer);
final Button button = (Button) findViewById(R.id.ntonboarding);}
public void SaveToMobile(View v) {
if (mobilnummer.getText().toString().length() >= 8) {
FragmentedUser.SaveMobile(mobilnummer.getText().toString()); // just saves to Parse.com (This works)
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("mobilnummer", mobilnummer.toString());
editor.commit();
}
}
Profile 轮廓
EditText mobilnummer;
public static final String PREFS_NAME = "MobileNumberSaved";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mobilnummer = (EditText) findViewById(R.id.mobilnummer);
This is the issue/problem i think! 这是我认为的问题/问题! (Code below) (下面的代码)
SharedPreferences MobileNumberSaved = this.getSharedPreferences("mobilnummer", Context.MODE_PRIVATE);
String tempMobilnummer = mobilnummer.getText().toString();
mobilnummer.setText(tempMobilnummer);
// IF user wants to change mobilenumber
mobilnummer.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
boolean handled = false;
if (actionId == EditorInfo.IME_ACTION_SEND) {
if (mobilnummer.getText().toString().length() >= 8)
FragmentedUser.SaveMobile(mobilnummer.getText().toString());
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("mobilnummer", mobilnummer.toString());
editor.commit();
tlfstatus.setImageResource(R.drawable.ok);
handled = true;
}
return handled;
}
});
I think here is your error: 我认为这是您的错误:
SharedPreferences MobileNumberSaved = this.getSharedPreferences("mobilnummer", Context.MODE_PRIVATE);
//here it should be MobileNumberSaved instead of mobilnummer, because tehre is no sense to set the same text to the textView again after you got it from there
String tempMobilnummer = MobileNumberSaved.getText().toString();
mobilnummer.setText(tempMobilnummer);
But the correct way to get a value from shared preferences is something like this: 但是从共享首选项中获取价值的正确方法是这样的:
SharedPreferences prefs = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
String savedMobileNumber = prefs.getString("mobilnummer", "");
mobilnummer.setText(savedMobileNumber);
Update: when you save the value in the shared preferences, you save only the editText, not it's value, so do something like this when saving: 更新:在共享首选项中保存值时,仅保存editText,而不保存其值,因此在保存时执行以下操作:
SharedPreferences.Editor editor = settings.edit();
//mobilnumber is your EditText, so get it's text like this
editor.putString("mobilnummer", mobilnummer.getText().toString());
editor.commit();
And everything else is still the same that I wrote above 其他一切都和我上面写的一样
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.