应用关闭后存储整数值并检索它

时间:2016-06-15 19:24:32

标签: java android integer sharedpreferences

我不知道如何解决这个问题,请帮忙!

我正在创建一个计数器应用程序,每次用户按下按钮时都会显示数字。它从0开始,最大为9999.我的问题是,在用户关闭应用程序后,它再次从0开始,但我想要的是显示用户按下的最后一个数字,而不是当用户再次打开应用程序时为0。我尝试了许多共享偏好代码,但没有一个有效。这是我的代码:

import android.content.Context;
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private int x;
    Context context = this;
    MediaPlayer mp;

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


       final TextView number=(TextView) findViewById(R.id.numbers);
        ImageButton btn_count=(ImageButton) findViewById(R.id.btn_countn);
        ImageButton btn_reset=(ImageButton) findViewById(R.id.btn_resetn);
        mp = MediaPlayer.create(context, R.raw.button_press);

        number.setText(String.format("%04d", x)+"");

        btn_count.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    if (mp.isPlaying()) {
                        mp.stop();
                        mp.release();
                        mp = MediaPlayer.create(context, R.raw.button_press);
                    } mp.start();
                } catch(Exception e) { e.printStackTrace(); }
                x = x +1;
                number.setText(String.format("%04d", x)+"");
            }
        });

        btn_reset.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    if (mp.isPlaying()) {
                        mp.stop();
                        mp.release();
                        mp = MediaPlayer.create(context, R.raw.button_press);
                    } mp.start();
                } catch(Exception e) { e.printStackTrace(); }
                x=0;
                number.setText(String.format("%04d", x)+"");
            }
        });
    }
}

2 个答案:

答案 0 :(得分:1)

您需要使用Android Preferences

如何?

定义应用程序何时关闭,然后调用一个方法,您可以在其中编写计数器的实际值

实施例

SharedPreferences buttonCounterValue = getSharedPreferences("counter", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = buttonCounterValue.edit();
editor.putInt("myCounter", i); //
editor.commit();

当应用程序再次打开时,您需要调用另一种方法并将其读回来...

实施例

SharedPreferences buttonCounterValue = getPreferences(Activity.MODE_PRIVATE);
int  storedCounter = buttonCounterValue.getInt("myCounter", 0);

这样验证你存储的内容并检查你得到的偏好是否为0,这意味着之前没有存储任何东西,所以你可以从0开始游戏......

答案 1 :(得分:0)

使用SharedPreferences可以执行以下操作:

public class MainActivity extends AppCompatActivity {

    private int x;
    SharedPreferences prefs;

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

        prefs = PreferenceManager.getDefaultSharedPreferences(this);
        x = prefs.getInt("count", 0);

        final TextView number=(TextView) findViewById(R.id.numbers);
        ImageButton btn_count=(ImageButton) findViewById(R.id.btn_countn);
        ImageButton btn_reset=(ImageButton) findViewById(R.id.btn_resetn);

        number.setText(String.valueOf(x));

        btn_count.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                x++;
                prefs.edit().putInt("count", x).apply();
                number.setText(String.valueOf(x));
            }
        });

        btn_reset.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                x=0;
                prefs.edit().putInt("count", x).apply();
                number.setText(String.valueOf(x));
            }
        });
    }
}