簡體   English   中英

從EditText中的sharedpreferences加載字符串(兩個類)

[英]Load strings from sharedpreferences in EditText (two classes)

我有兩個不同的活動。 第一個僅是第一次向用戶顯示-將電話號碼存儲在sharedprefs中。 我認為問題是我從prefs方法加載的,但是以防萬一,我將把所有內容留在這里,以使其與將來的用戶更加相關。 似乎在兩個活動中都保存了“ mobilnummer”-但是我在顯示它們時遇到了問題。

想法是如果用戶更新它,它將被覆蓋-我認為該方法可以做到這一點?

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();

        }
     }

輪廓

 EditText mobilnummer;
public static final String PREFS_NAME = "MobileNumberSaved";


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);



    mobilnummer = (EditText) findViewById(R.id.mobilnummer);

這是我認為的問題/問題! (下面的代碼)

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

我認為這是您的錯誤:

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

但是從共享首選項中獲取價值的正確方法是這樣的:

SharedPreferences prefs = getSharedPreferences(PREFS_NAME, MODE_PRIVATE); 
String savedMobileNumber = prefs.getString("mobilnummer", "");
mobilnummer.setText(savedMobileNumber);

更新:在共享首選項中保存值時,僅保存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();

其他一切都和我上面寫的一樣

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM