2016-07-27 106 views
0

我有一個活動A有按鈕,如果您沒有單擊該按鈕,那麼它必須在一段時間後打開另一個活動B,並且如果單擊在按鈕上它必須打開活動C,但不應該打開活動B. 我使用處理程序來執行此操作,但是當我單擊按鈕時,它會打開活動C,但它在時間限制後也會打開活動B.Android如何從一個活動移動到2個不同的活動

new Handler().postDelayed(new Runnable() { 
        @Override 
        public void run() { 

         Intent mainIntent = new Intent(Driving.this, FinalPage.class); 
         startActivity(mainIntent); 
         finish(); 
        } 
       }, SPLASH_DISPLAY_LENGTH); 
      } 
     }); 
+0

你可以通過意向標誌或檢查條件 – KrishnaJ

回答

0

您可以檢查按鈕被點擊然後打開活動Ç否則活動B和點擊布爾變量假後或真

If(Button1.isClicked()) 
{ 
      Intent to activity C 
} 
else 
{ 
      Intent to activity B 
} 
0

單擊該按鈕時,您可以設置一個布爾值,「loadActivityC =假'。最初聲明它爲真。然後如果(loadActivityC),用意圖啓動活動。

1

你必須使用一個標誌。您可以編寫代碼爲

boolean flag=true; 

new Handler().postDelayed(new Runnable() { 
        @Override 
        public void run() { 

         Intent mainIntent = new Intent(Driving.this, FinalPage.class); 
         if(flag){       
          startActivity(mainIntent); 
          finish();} 
        } 
       }, SPLASH_DISPLAY_LENGTH); 
      } 
     }); 

button.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       Intent mainIntent = new Intent(Driving.this, Page.class); 
       flag=false;       
       startActivity(mainIntent); 

      } 
     }); 
1

即使您移動到不同的活動,您的打開ActivityB的處理程序代碼也會運行。您應該創建一個變量來檢查其他活動是否打開。或者你可以在ActivityA的onPause()使用:

handler_ins.removeCallbacksAndMessages(null) 

這將正確切換到其他活動之前取消處理程序的當前未決的任務。

+0

這是一個完美的答案。 – SripadRaj

+0

它工作!!!謝謝 – sandeep

0
Runnable runnable = new Runnable() { 
        @Override 
        public void run() { 

         Intent mainIntent = new Intent(Driving.this, FinalPage.class); 
         startActivity(mainIntent); 
         finish(); 
        } 
       }, SPLASH_DISPLAY_LENGTH); 

Handler myHandler = new Handler(); 
myHandler.postDelayed(runnable, SPLASH_DISPLAY_LENGTH); 

並用它在單擊按鈕之前開放新的活動

myHandler.removeCallbacks(runnable); 
0

當用戶點擊行爲C鈕就取消處理。

0

可以使處理對象和按鈕後,單擊取消處理線程,

private Handler myHandler = new Handler(); 

Runnable myRunnableObj = new Runnable() 
    { 
     public void run() 
     { 
      Intent mainIntent = new Intent(Driving.this, FinalPage.class); 
      startActivity(mainIntent); 
      finish(); 
     } 
    }; 
myHandler.postDelayed(myRunnableObj, SPLASH_DISPLAY_LENGTH); 

並點擊您的按鈕時,取消處理程序回調,

myHandler.removeCallbacks(myRunnableObj); 
+0

嗨我使用你的代碼,但它給我錯誤,當我使用myHandler.removeCallbacks(myRunnableObj);在onclick(按鈕) – sandeep

+0

裏面可以共享錯誤日誌。 –

+0

現在工作,謝謝!!!! – sandeep

0
boolean opennigFirstActivity = false; 
boolean opennigSecondActivity = false; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.first_activity); 

    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      Intent mainIntent = new Intent(Driving.this, FinalPage.class); 
      if (!opennigSecondActivity) { 
       Log.d("First Activity", "Opening Second"); 
       opennigFirstActivity = true; 
       startActivity(mainIntent); 
       finish(); 
      } 
     } 
    }, 5000); 

    Button button = (Button) findViewById(R.id.button); 
    button.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      Intent mainIntent = new Intent(Driving.this, Page.class); 
      if (!opennigFirstActivity) { 
       Log.d("First Activity", "Opening Third"); 
       opennigSecondActivity = true; 
       startActivity(mainIntent); 
      } 

     } 
    }); 
} 

希望它能會幫助你。

+0

我試着按照你所說的添加,但它仍然在做 – sandeep

+0

我運行上面的代碼,它對我來說絕對正常。 :) –

+0

現在它的工作,謝謝! – sandeep

相關問題