SharedPreferences Save value of Int in a TextView

≯℡__Kan透↙ 提交于 2019-12-10 12:26:33

问题


I try to save the value of an int displayed in a TextView using SharedPreferences, it can't work at all. I did a simple small example of code :

public class MainActivity extends Activity {

Button search;
TextView tvRing;
int redRing;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final SharedPreferences prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE);

    search = (Button) findViewById(R.id.radar);
    tvRing = (TextView) findViewById(R.id.ring);

    int someint = prefs.getInt("someint", 0);
    tvRing.setText("Objects found : " + String.valueOf(someint));

    search.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            addRing();
            SharedPreferences.Editor editor = prefs.edit();
            editor.putInt("someint", redRing);
            editor.commit();
        }
    });
}

public void addRing() {
    redRing++;
}
}

Thank u all for yo help.


回答1:


I explained where I made changes

public class MainActivity extends Activity {

    Button search;
    TextView tvRing;

    //Making sharedpreferences and integers global for ease of use
    private SharedPreferences prefs;
    private int redRing, someint;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        search = (Button) findViewById(R.id.radar);
        tvRing = (TextView) findViewById(R.id.ring);

        //Someint default value is 0 if not ever saved before
        prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE);
        someint = prefs.getInt("someint", 0);
        tvRing.setText("Objects found : " + String.valueOf(someint));

        search.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Load the lates someint in onclick
                someint = prefs.getInt("someint", 0);

                //redring is the dummy integer to increment someint
                redRing=someint+1;
                //Save the incremented value
                SharedPreferences.Editor editor = prefs.edit();
                editor.putInt("someint", redRing);
                editor.commit();

                //To show the latest number on the tv
                lastNumber();
            }
        });
    }


    public void lastNumber() {
        prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE);
        someint = prefs.getInt("someint", 0);
        tvRing.setText("Objects found : " + String.valueOf(someint));
    }
}



回答2:


You should use

SharedPreferences.Editor editor = prefs.edit();
        editor.putInt("someint", redRing);
        editor.apply();

and you are never using "someint", use

tvRing.setText(String.valueOf(someint));


来源:https://stackoverflow.com/questions/43849352/sharedpreferences-save-value-of-int-in-a-textview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!