为什么代码 运行 是一个命令,即使它的 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 声明,所以应该如此。
当我 运行 我的代码处于调试模式时,我可以看到,对于值 "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 声明,所以应该如此。