当我在 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/