java - 为什么代码会运行命令,即使其 if 语句未得到满足?

标签 java android if-statement onclick

当我在 Debug模式下运行代码时,我可以看到,对于值“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();
    }
}

最佳答案

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

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

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

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

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

关于java - 为什么代码会运行命令,即使其 if 语句未得到满足?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29377149/

相关文章:

java - Gradle 自定义提供的范围包括 jar 到 war 存档

Java-当值存储在字符串列表中时,如何使用 Map 查找匹配的键

java - fragment 中的 OnClickListener 不再起作用

android - 在我自己的自定义 Android 主屏幕中,如何捕捉主页按钮?

android - 如何在android中将TextWatcher添加到Activity

java - 用于编写和运行 hadoop 作业的 IDE?

android - 如何解决 android-studio 中的 'Manifest merger failed' 错误?

.net - 是否可以重构这个 C# if(..) 语句?

python - else、elif、if Python 中的问题

java - 如何让这个程序在之后终止