Java 为什么代码运行命令,即使其if语句为';你没有完成吗?
当我在调试模式下运行我的代码时,我可以看到,对于值“ooy”,设置了另一个内容(这样做是正确的),而不是值“skii”。但是代码仍然会启动活动“Game.class”和活动“Tutorial.class”,但只会在后台启动。我怎样才能解决这个问题 主屏幕: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
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中设置共享首选项。。