繁体   English   中英

带有两次崩溃和默认值的Android Studio SharedPreferences

[英]Android Studio SharedPreferences With Double Crashes and Default Values

所以我有一些代码要保存在字段中键入的内容,因此当我启动该应用程序时,它具有以前的数字(双精度数)以及首次启动时具有默认值1的值,但我现在尝试了应用程序崩溃,我尝试了最近3个小时,这里的代码是将Double To String转换为String并将String转换为Double,我知道这不是正确的方法,但是我不明白此处的正确方法是代码

package me.danilkp1234.laerkeholtmilk;

import android.content.Context;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;

import com.google.firebase.crash.FirebaseCrash;

import static me.danilkp1234.laerkeholtmilk.R.id.brix;
import static me.danilkp1234.laerkeholtmilk.R.id.textView;
import static me.danilkp1234.laerkeholtmilk.R.id.textView3;

public class MainActivity extends AppCompatActivity {

private EditText milkdone;
private EditText brixdone;
private double milkdone2;
private double brixdone2;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    milkdone = (EditText) findViewById(R.id.milkliter);
    brixdone = (EditText) findViewById(R.id.brix);
    milkdone.setOnEditorActionListener(new OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            boolean handled = false;
            if (actionId == EditorInfo.IME_ACTION_DONE) {
                milkdone2 = Double.parseDouble(milkdone.getText().toString());
                brixdone2 = Double.parseDouble(brixdone.getText().toString());
                double test2 = brixdone2 + milkdone2;
                TextView change = (TextView) findViewById(R.id.textView3);
                change.setText(String.valueOf(test2));
                handled = true;
            }
            return handled;
        }

    });
    brixdone.setOnEditorActionListener(new OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            boolean handled = false;
            if (actionId == EditorInfo.IME_ACTION_DONE){
                SharedPreferences prefs = getSharedPreferences("SavedTotals",Context.MODE_PRIVATE);
                milkdone2 = Double.parseDouble(prefs.getString("BrixDone2Saved",String.valueOf(milkdone)));
                brixdone2 = Double.parseDouble(prefs.getString("MilkDone2Saved",String.valueOf(milkdone)));
                double test2 = brixdone2 + milkdone2;
                TextView change = (TextView) findViewById(R.id.textView3);
                change.setText(String.valueOf(brixdone2));
                handled = true;
            }
            return handled;
        }
    });
    };
    public void onStop() {
        super.onStop();
        storeDouble("MilkDone2Saved",milkdone);
        storeDouble("BrixDone2Saved",brixdone);

    }
    public void storeDouble(String d, EditText c){
        SharedPreferences prefs = getSharedPreferences("SavedTotals",Context.MODE_PRIVATE);

        SharedPreferences.Editor editor = prefs.edit();

        editor.putString(d,String.valueOf(c.getText().toString()));
        editor.apply();
}
public void GetDouble(){
    SharedPreferences prefs = getSharedPreferences("SavedTotals",Context.MODE_PRIVATE);

}

}

您可以首先检查来自“共享首选项”的字符串值是否为浮动格式,然后可以将其转换。

   String MilkDone2Saved=(prefs.getString("MilkDone2Saved",String.valueOf(milkdone));

    if(!TextUtils.isEmpty(MilkDone2Saved)){
milkdone2 = Double.parseDouble(MilkDOne2Saved);
}

希望这会有所帮助:),请为下一次选择更好的变量名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM