2015-09-25 57 views
0

我正在嘗試通過單擊活動的屏幕來找到跳過閃屏的方法。這是我來到,它的工作原理。問題是,我點擊後,新的活動被調用,布爾假默認如果再次運行,意圖被調用兩次。我究竟做錯了什麼?如何使用布爾值停止onClick線程?

RelativeLayout OnClickSkipScreen = (RelativeLayout)findViewById(R.id.SplashScreenView); 
    OnClickSkipScreen.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      OnClickSkip = true; 
      /*Loading.interrupt(); 
      Intent SplashScreen = new Intent(SplashScreen.this, HomeScreen.class); 
      startActivity(SplashScreen); 
      overridePendingTransition(R.anim.fade_in, R.anim.fade_out); 
      finish();*/ 
     } 
    }); 
    Thread Loading = new Thread() { 
     @Override 
     public void run() { 
      if (!OnClickSkip) { 
       try { 
        sleep(2573); 
        Intent SplashScreen = new Intent(SplashScreen.this, HomeScreen.class); 
        startActivity(SplashScreen); 
        overridePendingTransition(R.anim.fade_in, R.anim.fade_out); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } finally { 
        finish(); 
       } 
      } else if (OnClickSkip) { 
       try { 
        Intent SplashScreen = new Intent(SplashScreen.this, HomeScreen.class); 
        startActivity(SplashScreen); 
        overridePendingTransition(R.anim.fade_in, R.anim.fade_out); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } finally { 
        finish(); 
       } 
      } 
     } 
    }; 
    Loading.start(); 
} 
+0

你在哪裏申報'OnClickSkip'?你堅持它的數據嗎? – Elltz

+0

緊跟在活動類之後:Thread Loading = new Thread();和 volatile boolean OnClickSkip = false;我怎樣才能讓數據持久?你的意思是使布爾真正的狀態是永久的,對嗎? –

回答

1

使用SharedPreference。然後想一想,當你的課程加載它時,它會將你的布爾值加載到它的初始狀態false。所以你一直只會滿足一個條件,這就是你現在遇到的情況。

當我說的堅持,我的意思是你需要保存boolean狀態,從而可以從存儲加載它,並檢查,這個你boolean將不依賴於這始終是假的初始狀態

所以在你的創建它可能是這樣的

SharedPreference sp = getPreference(0); 
boolean OnClickSkip = sp.getBoolean("onclick",false); 

現在你可以繼續;如果你想保存布爾狀態

Editor e = sp.edit(); 
e.putBoolean("onclick",onClickSkip); 
e.commit(); 

現在繼續您的代碼