如何在SharedPreferences中设置计数器,以便通过单击按钮从TextView保存和检索数据

时间:2017-02-10 18:36:42

标签: java android sharedpreferences

我的Android应用的共享偏好设置存在问题。它保存数据并检索但不能使用计数器。

当我点击该按钮时,它会在TextView中增加0.0005,因此必须在按钮事件中保存SharePref。现在,当我重新启动应用程序时,它会检索它,但现在点击按钮它会与计数器相同。重新启动应用程序后,然后单击它后,计数器启动时返回。这意味着单击按钮后,共享首选项数据会以某种方式丢失。

public class MainActivity extends AppCompatActivity {

    Button btn1;
    TextView t1;
    float counter = 0;
    float adding = (float) 0.0005;

    SharedPreferences sharedpreferences;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

     t1 = (TextView)findViewById(R.id.textView);

        sharedpreferences = getSharedPreferences("MyPREFERENCES", Context.MODE_PRIVATE);
        t1.setText(String.valueOf(sharedpreferences.getFloat("key",0)));

    }

    public void AdButton(View v)     //Button Onclick
    {
        counter = counter+adding;
        strCounter = Float.toString(counter);
        t1.setText(strCounter);

       sharedpreferences = getSharedPreferences("MyPREFERENCES", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedpreferences.edit();
        editor.putFloat("key", counter);
        editor.commit();
    }

}

2 个答案:

答案 0 :(得分:0)

根据您的理解,您希望将counter值保存为共享首选项并在应用程序启动时再次检索它,然后单击按钮,您将增加它并在共享首选项中再次保存。正确的吗?

简单地说,你所做的是当应用程序启动时,你在文本视图中显示保存的值(如果存在),但是你不能将它保留在计数器中!所以counter是

您必须在检索后将其保留在计数器中,在显示textview上的值之后或之前在onCreate中添加此行。

counter = sharedpreferences.getFloat("key",0);

答案 1 :(得分:0)

在再次添加计数器之前,您忘记检索计数器的值。 只需使用:

public void AdButton(View v)     //Button Onclick
{
    sharedpreferences = getActivity().getSharedPreferences("MyPREFERENCES", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedpreferences.edit();
    counter = sharedpreferences.getFloat("key",0);
    counter = counter + adding;
    String strCounter = Float.toString(counter);
    t1.setText(strCounter);

    editor.putFloat("key", counter);

    editor.commit();
}