为什么代码 运行 是一个命令,即使它的 if 语句没有被满足?

Why does the code run a command, even if its if statement isn't fulfilled?

当我 运行 我的代码处于调试模式时,我可以看到,对于值 "ooy" 设置了另一个内容(这样它是正确的)而不是值 "skii"。但是代码仍然会启动 Activity "Game.class" 和 Activity "Tutorial.class",但只是在后台。我该如何解决?

主屏幕:

public class MainScreen extends Activity  implements OnClickListener {
    public static final String PREFS_NAME = "MyPrefsFile1";
    String ooy;
    String skii;

    super.onCreate(savedInstanceState);

    @Override
    public void onCreate(Bundle savedInstanceState) {

        setContentView(R.layout.activity_main_screen);

        SharedPreferences tutoask = getSharedPreferences(PREFS_NAME, 0);
        ooy = tutoask.getString("skipMessage", "NOT checked");

        skii = "checked";

        @Override
        public void onClick(View v) {
            int id = v.getId();
            if (id == R.id.btn_start) {

                startActivity(new Intent(this, Tutorial.class));

                if (ooy.equals(skii)){
                    startActivity(new Intent(this, Game.class));
                }
            }

教程:

public class Tutorial extends Activity  implements OnClickListener {

    Button btn;
    public CheckBox checkBox1;
    String checkBoxResult = "NOT checked";
    public static final String PREFS_NAME = "MyPrefsFile1";
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_tutorial);

        btn = (Button) findViewById(R.id.startut);
        btn.setOnClickListener( this);
        checkBox1 = (CheckBox) findViewById(R.id.checkBox1);
    }

    @Override
    public void onClick(View v) {

        if (checkBox1.isChecked()){

            checkBoxResult = "checked";

            SharedPreferences tutoask = getSharedPreferences(PREFS_NAME, 0);
            SharedPreferences.Editor editor = tutoask.edit();
            editor.putString("skipMessage", checkBoxResult);

            // Commit the edits!
            editor.commit();
        }
        startActivity(new Intent(this, Game.class));
        finish();
    }
}

查看ooy和skii对象的equals方法。他们可能实施错误。

你是说这两个变量有不同的值?对不起,你的句子很难理解。

如果变量不相等,它将执行 if 命令中的内容,因为您有 NOT (!) 命令。

如果它们不相等,执行命令:

startActivity(new Intent(this,Game.class));

我不确定你想做什么以及实际问题是什么。您有两个值不相等的变量;当你检查两者时,它们不相等,所以执行 if 里面的命令。因为你有 not 声明,所以应该如此。