为什么代码运行命令,即使它的if语句没有完成?

时间:2015-03-31 19:41:20

标签: java android if-statement onclick

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

MainScreen:

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();
    }
}

2 个答案:

答案 0 :(得分:4)

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

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

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

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

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

答案 1 :(得分:0)

看看ooy和skii物体的equals方法。它们可能实施错误。