Java 为什么代码运行命令,即使其if语句为';你没有完成吗?

Java 为什么代码运行命令,即使其if语句为';你没有完成吗?,java,android,if-statement,onclick,Java,Android,If Statement,Onclick,当我在调试模式下运行我的代码时,我可以看到,对于值“ooy”,设置了另一个内容(这样做是正确的),而不是值“skii”。但是代码仍然会启动活动“Game.class”和活动“Tutorial.class”,但只会在后台启动。我怎样才能解决这个问题 主屏幕: public class MainScreen extends Activity implements OnClickListener { public static final String PREFS_NAME = "MyPre

当我在调试模式下运行我的代码时,我可以看到,对于值“ooy”,设置了另一个内容(这样做是正确的),而不是值“skii”。但是代码仍然会启动活动“Game.class”和活动“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方法。它们的实现可能是错误的。

看看ooy和skii对象的equals方法。它们可能实现错误。

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

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

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

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

我不知道你想做什么,实际问题是什么。有两个值不相等的变量;当您检查两者时,它们不相等,因此执行
if
中的命令。因为您有not语句,所以应该如此。

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

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

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

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

我不知道你想做什么,实际问题是什么。有两个值不相等的变量;当您检查两者时,它们不相等,因此执行
if
中的命令。既然您有not语句,就应该如此。

那么显然!哦,equals(skii)是真的。什么类型的ooy和skii,以及它从哪里得到值?@Skaros更新了这个问题。对不起,一开始不是完整的代码。然后很明显!哦,equals(skii)是真的。什么类型的ooy和skii,以及它从哪里得到值?@Skaros更新了这个问题。很抱歉,一开始没有完整的代码。如果用户是新加入应用程序的,则会显示教程。如果他单击“不再显示此内容”,则应将“ooy”设置为“skii”,每次都应跳过教程,直接将他带到游戏中。现在,我删除了。但仍然不起作用。如果我选中“不再显示”复选框,它就会忽略这两个变量的值是什么?很好,当我关闭game.class时,它只是没有刷新主页上的共享首选项,但现在它在onResume中设置共享首选项时起作用。如果用户是新进入应用程序的,则会显示教程。如果他单击“不再显示此内容”,则应将“ooy”设置为“skii”,每次都应跳过教程,直接将他带到游戏中。现在,我删除了。但仍然不起作用。如果我选中“不再显示”复选框,它就会忽略这两个变量的值是什么?很好,当我关闭game.class时,它只是没有刷新主页上的共享首选项,但现在它可以在onResume中设置共享首选项。。