无法将整数转换为Float

时间:2018-06-11 14:25:51

标签: java android

我想在我的片段中将float变量存储为SharedPreferences。所以我尝试设置它并稍后编辑它,但我在行verbrauch = prefsver.getFloat("key", 0);中得到一个错误,即Integer无法转换为Float变量,尽管我认为我甚至没有在那里使用int。我是以错误的方式存储它吗?

我的代码,它只是一个剪切,所以我希望我没有削减任何相关的东西:

public class ItemThreeFragment extends Fragment {

    TextView textView11;
    float verbrauch;

    public static ItemThreeFragment newInstance() {
        ItemThreeFragment fragment = new ItemThreeFragment();
        return fragment;
    }

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

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        final View view = inflater.inflate(R.layout.fragment_item_three, container, false);

        SharedPreferences prefsver = getActivity().getBaseContext().getSharedPreferences("myPrefsKeyv",
                Context.MODE_PRIVATE);
        verbrauch = prefsver.getFloat("key",0);

        Button button = (Button) view.findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

        final EditText et = (EditText) getActivity().findViewById(R.id.editText);
                String str = et.getText().toString();

        verbrauch = Float.valueOf(str);

                SharedPreferences prefsver = getActivity().getSharedPreferences("myPrefsKeyv",
                        Context.MODE_PRIVATE);
                prefsver.edit().putFloat("key", verbrauch)
                        .apply();
            }
        });
}

2 个答案:

答案 0 :(得分:2)

0是一个int文字 - 不是浮点数。使用0f(带后缀),或显式转换为(float)0。

修改

同时检查您是否实际存放了一个浮点数,例如:可能有一些剩余的价值。该方法将尝试将存储在prefs中的内容转换为float,如果转换不成功,则抛出ClassCastException。

答案 1 :(得分:1)

verbrauch = prefsver.getFloat("key",0F);是正确的。请注意F之后的0,使其成为浮点数。