java - Android:如何保存游戏中的最好成绩?

标签 java android

我是一名初学者程序员,我为 Android 创建了一个游戏,我遇到了一个问题,我想在完成游戏后向我展示我在玩这个游戏时取得的最佳成绩,我提出了一个条件

if(DOD> sharedPreferences.getInt("DOD_SHA",0));

当然,我在这里使用sharedPreferences来保存最好的分数,但是这个条件根本不起作用,我的sharedPreference采用任何值,甚至小于最后的分数

public class EndScreen extends AppCompatActivity {

    TextView Levelwys,war;
    Button GotoMenu;
    int DOD,ODE,MNO,PIE,DZI,POT,SIL,LOG;
    SharedPreferences sharedPreferences;
    SharedPreferences.Editor editor;


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

        Levelwys = findViewById(R.id.textView15);
        war = findViewById(R.id.textView19);
        GotoMenu = findViewById(R.id.button);
        sharedPreferences = getSharedPreferences("com.example.goodmath", Context.MODE_PRIVATE);
        editor = sharedPreferences.edit();

        Intent intent = getIntent();
        int number = intent.getIntExtra(GameSingleActivity.LEVEL, 0);
        DOD = intent.getIntExtra("DOD", 0);
        ODE = intent.getIntExtra("ODE", 0);
        MNO = intent.getIntExtra("MNO", 0);
        PIE = intent.getIntExtra("PIE", 0);
        DZI = intent.getIntExtra("DZI", 0);
        POT = intent.getIntExtra("POT", 0);
        SIL = intent.getIntExtra("SIL", 0);
        LOG = intent.getIntExtra("LOG", 0);
        Levelwys.setText(String.valueOf(number));
        String test = String.valueOf(DOD);
        Toast.makeText(getApplicationContext(), test, Toast.LENGTH_LONG).show();
        Save();

        GotoMenu.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                GotoMenu();
            }
        });
    }
    @Override
    public void onBackPressed() {

    }

    void GotoMenu()
    {
        Intent intent1 = new Intent(this, MenuActivity.class);
        startActivity(intent1);
    }

    void Save()
    {
        if(DOD> sharedPreferences.getInt("DOD_SHA",0));
        {
            editor.putInt("DOD_SHA",DOD);
            editor.apply ();
            editor.commit();
            Toast.makeText(getApplicationContext(), "cos", Toast.LENGTH_LONG).show();
            war.setText(String.valueOf(sharedPreferences.getInt("DOD_SHA",DOD)));
        }
    }

}

最佳答案

您的 if 条件中有拼写错误:

if(DOD> sharedPreferences.getInt("DOD_SHA",0));

您在此行末尾添加了额外的分号。因此,总是调用低于此条件的代码。 删除这个分号,一切都会正常工作:

if(DOD> sharedPreferences.getInt("DOD_SHA",0))
    {
        editor.putInt("DOD_SHA",DOD);
        editor.apply ();
        editor.commit();
        Toast.makeText(getApplicationContext(), "cos", Toast.LENGTH_LONG).show();
        war.setText(String.valueOf(sharedPreferences.getInt("DOD_SHA",DOD)));
    }

关于java - Android:如何保存游戏中的最好成绩?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60722858/

相关文章:

java - AspectJ 之前可以从方法返回吗?

android - 如何在我的 Android 应用程序中使用新的 Google Sans 字体?

用于 Eclipse 的 AndroidStaggeredGrid Gradle 库

java - 不打印整个数据

java - @Autowired & Spring 上下文层次结构

java - Java 中的 sql2o 与 SQLite NoInitialContextException

对于相同的对象,Java 哈希码在一种情况下会发生冲突,而在另一种情况下不会发生冲突,为什么? (下面的代码)

java - 基本 Java 接口(interface)在实现该接口(interface)的类中返回对象

android - 单击通知后启动器 Activity 将打开(应用程序已关闭)

java - OpenGL ES 2.0 - 用纹理画线?