保存一个int并使用sharedpreferences Android在alertdialouge中显示它

时间:2015-12-30 09:56:28

标签: java android sharedpreferences android-sharedpreferences

嗨,所以我试图制作一个游戏,我希望高分可以保存。从我最好的阅读使用共享偏好。这是我的代码:

我在这里宣布了一下

 public int score;
public int highScore;
SharedPreferences data;
public static String filename = "HighScore";

然后我在on create中调用它。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    data = getSharedPreferences(filename, 0);

    SharedPreferences.Editor editor = data.edit();
    editor.putInt("Hscore", highScore);
    editor.commit();

}

现在我想在alertdialouge

中显示高分
  AlertDialog.Builder myAlert = new AlertDialog.Builder(this);
        myAlert.setTitle("You have lost");
        myAlert.setMessage("Your score was :" + score + "\n" + "Your Highscore is :" + \\read highscore and display here)
                .setPositiveButton("OK", new DialogInterface.OnClickListener(){
                    @Override
                public void onClick(DialogInterface dialog, int which){
                        dialog.dismiss();
                        score=0;
                        TextView myScore = (TextView)findViewById(R.id.scoreTxt);
                        String points = String.valueOf(score);
                        myScore.setText(points);
                    }
                })
                .create();

感谢您的帮助

public class MainActivity extends ActionBarActivity {

public int score;
public int highScore = 10;
SharedPreferences data;
public static String filename = "HighScore"; // This is shared preference name


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

    data = getSharedPreferences(filename, 0);

   /*SharedPreferences.Editor editor = data.edit();
    editor.putInt("HighScore", highScore);
    editor.apply(); // Use editor.apply() for saving in background*/

    SharedPreferences data = getSharedPreferences(filename, 0);
    int currentscore;
    currentscore = 10;
    highScore = data.getInt("Hscore", 0); // lets say highscore = 100
    if(highScore>currentscore)
    {
        // This will store the new high score in the sharedpreferences.
        SharedPreferences.Editor editor = data.edit();
        editor.putInt("Hscore", highScore);
        editor.commit(); // Use editor.apply() for saving in background
        // after this highscore will be 100
    }

}

public void generateH(View v){
    Random rand = new Random();
    int number = rand.nextInt(2)+1;
    TextView myText = (TextView)findViewById(R.id.coinResult);

           if (number == 1){
        myText.setText("HEADS");
        TextView myScore = (TextView)findViewById(R.id.scoreTxt);
        score = score+1;
        String points = String.valueOf(score);
        myScore.setText(points);


    }

    else{
        myText.setText("TAILS");



        AlertDialog.Builder myAlert = new AlertDialog.Builder(this);
        myAlert.setTitle("You have lost");
        myAlert.setMessage("Your score was :" + score + "\n" + "Your Highscore is: " +  data.getInt("Hscore", 0) )
                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                })
                .create();
        score = 0;
        TextView myScore = (TextView) findViewById(R.id.scoreTxt);
        String points = String.valueOf(score);
        myScore.setText(points);

        myAlert.show();
    }

}
public void generateT(View v){
    Random rand = new Random();
    int number = rand.nextInt(2)+1;
    TextView myText = (TextView)findViewById(R.id.coinResult);

    if(score > highScore){
        highScore = score;
    }


    if (number == 1){
        myText.setText("HEADS");



        AlertDialog.Builder myAlert = new AlertDialog.Builder(this);
        myAlert.setTitle("You have lost");
        myAlert.setMessage("Your score was :" + score + "\n" + "Your Highscore is :" + data.getInt("Hscore", 0))
                .setPositiveButton("OK", new DialogInterface.OnClickListener(){
                    @Override
                    public void onClick(DialogInterface dialog, int which){
                        dialog.dismiss();
                    }
                })
                .create();

        score = 0;
        TextView myScore = (TextView)findViewById(R.id.scoreTxt);
        String points = String.valueOf(score);
        myScore.setText(points);
        myAlert.show();

    }

    else{
        myText.setText("TAILS");
        TextView myScore = (TextView)findViewById(R.id.scoreTxt);
        score = score+1;
        String points = String.valueOf(score);
        myScore.setText(points);
    }

}




@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

}

3 个答案:

答案 0 :(得分:1)

您可以拥有一个单独的类:

public class ScoreSharedPreference {

    private static final String PREFS_NAME = "SCORE_PREFS_";
    private static final String CURRENT_SCORE = "CURRENT_SCORE";
    SharedPreferences prefs;
    Context context;
    public ScoreSharedPreference(Context context) {
        this.context=context;
        prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);

    }

    public void saveScore(int score) {
        SharedPreferences.Editor editor = prefs.edit();
        editor.putInt(CURRENT_SCORE, score);
        editor.commit();
    }



    public int getScore() {
       return prefs.getInt(CURRENT_SCORE, 0);
    }
}

答案 1 :(得分:1)

这个过程很简单。 使用共享偏好的步骤:

步骤1:您需要创建共享偏好变量以保存高分。

步骤2:需要将当前的高分保存到共享首选项变量。

第3步:在需要时检索高分。

请尝试以下代码:

public int score;
public int highScore;
SharedPreferences data;
public static String filename = "HighScore"; // This is shared preference name


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

//初始化共享偏好

data = getSharedPreferences(filename, 0); 

//这是您在共享首选项中插入/存储Highscore值的地方

SharedPreferences.Editor editor = data.edit(); 
editor.putInt("Hscore", highScore);
editor.commit(); // Use editor.apply() for saving in background

} // on create ends

从共享偏好中获取值 - 语法

SharedPreferences sp = getSharedPreferences(filename, 0);
int value = data.getInt("KEY VALUE", "DEFAULT VALUE"); // If there is no shared preference defined for the given key value default value is returned.

在“提醒”对话框中显示“高分”

SharedPreferences data = getSharedPreferences(filename, 0);

AlertDialog.Builder myAlert = new AlertDialog.Builder(this);
    myAlert.setTitle("You have lost");
    myAlert.setMessage("Your score was :" + score + "\n" + "Your Highscore is :" + data.getInt("Hscore", 0)) // refer syntax
            .setPositiveButton("OK", new DialogInterface.OnClickListener(){
                @Override
            public void onClick(DialogInterface dialog, int which){
                    dialog.dismiss();
                    score=0;
                    TextView myScore = (TextView)findViewById(R.id.scoreTxt);
                    String points = String.valueOf(score);
                    myScore.setText(points);
                }
            })
            .create();

资源:

Android Developer Page

Tutorial 1

Tutorial 2

参考以上链接.. !!这会很有帮助。

这会帮助你.. !!试试吧......

更新了答案

public void generateH(View v){
    Random rand = new Random();
    int number = rand.nextInt(2)+1;
    TextView myText = (TextView)findViewById(R.id.coinResult);

    if (number == 1){
        myText.setText("HEADS");
        TextView myScore = (TextView)findViewById(R.id.scoreTxt);
        score = score+1;
        String points = String.valueOf(score);
        myScore.setText(points);
        if(highScore>points)
        {
            // This will store the new high score in the sharedpreferences.
            SharedPreferences.Editor editor = data.edit();
            editor.putInt("Hscore", highScore);
            editor.commit(); // Use editor.apply() for saving in background
            // after this highscore will be 100
        }else
        {
            SharedPreferences.Editor editor = data.edit();
            editor.putInt("Hscore", points);
            editor.commit();
        }

    }

    else{
        myText.setText("TAILS");
        score = 0;
        TextView myScore = (TextView) findViewById(R.id.scoreTxt);
        String points = String.valueOf(score);
        myScore.setText(points);
        if(highScore>points)
        {
            // This will store the new high score in the sharedpreferences.
            SharedPreferences.Editor editor = data.edit();
            editor.putInt("Hscore", highScore);
            editor.commit(); // Use editor.apply() for saving in background
            // after this highscore will be 100
        }else
        {
            SharedPreferences.Editor editor = data.edit();
            editor.putInt("Hscore", points);
            editor.commit();
        }

        AlertDialog.Builder myAlert = new AlertDialog.Builder(this);
        myAlert.setTitle("You have lost");
        myAlert.setMessage("Your score was :" + score + "\n" + "Your Highscore is: " +  data.getInt("Hscore", 0) )
        .setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        })
        .create();

        myAlert.show();
    }

} 

答案 2 :(得分:0)

data = getSharedPreferences(filename, 0);
if(data!=null){
 int previous_highscore = data.getInt("Hscore");
}