2015-03-31 29 views
0

當我在調試模式下運行我的代碼時,我可以看到,對於值「ooy」,另一個內容被設置(這將是正確的),而不是值「skii」。但是代碼仍然會啓動Activity「Game.class」和Activity「Tutorial.class」,但只能在後臺啓動。我該如何解決這個問題?爲什麼代碼運行一個命令,即使它的if語句沒有滿足?

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

那麼顯然!ooy.equals(skii)是真的。什麼類型的ooy和skii是,以及它獲得價值的地方? – avjr 2015-03-31 19:45:21

+0

@Skaros更新了問題。對不起,首先不是完整的代碼。 – 2015-03-31 19:55:54

回答

4

你是說這兩個變量有不同的值嗎?對不起,你的句子很難理解。

如果變量不相等,它將執行if命令中的內容,因爲您有NOT(!)命令。

如果它們不等於執行命令:

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

我不知道你想要做什麼實際的問題是什麼。你有兩個變量不等於值;當你檢查兩者時,它們不相等,所以執行if內部的命令。因爲你有沒有聲明應該。

+0

如果用戶剛剛進入該應用程序,該教程將顯示。如果他點擊「不再顯示這個」,應該將「ooy」設置爲「skii」,那麼每次都應該跳過該教程並直接將其帶到遊戲中。 – 2015-03-31 20:28:07

+0

現在好了,我刪除了! 。但仍然無法正常工作。它只是忽略,如果我檢查「不再顯示」複選框 – 2015-03-31 20:49:02

+0

這兩個變量的值是什麼? – 2015-03-31 20:53:36

0

看那贛州和SKII對象的equals方法。他們可能執行錯誤。

相關問題