2016-07-27 5 views
0

私はボタンを持つアクティビティAを持っています。そのボタンをクリックしないと、一定時間後に別のアクティビティBを開く必要があります。ボタンではアクティビティCを開く必要がありますが、アクティビティBを開くべきではありません。 ハンドラを使用してこれを行いましたが、ボタンをクリックするとアクティビティCが開きますが、時間制限の後にアクティビティBも開きます。Android - 1つのアクティビティから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

インテントでフラグを渡すかcondititionを確認する – KrishnaJ

答えて

0

あなたは、そのボタンが、その後開いているアクティビティCそれ以外の場合は、アクティビティBクリックすると、ボタンがクリックされたときにクリックブール変数偽または真

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

後にあなたが「、loadActivityCをブール値を設定することができます確認することができます= false '。最初はそれを真と宣言してください。次に、(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

あなたが異なるアクティビティに移動した場合でも、あなたのハンドラのコードは実行されます。他のアクティビティが開いているかどうかを確認する変数を作成する必要があります。これは、右の他の活動に切り替える前に、現在のハンドラの保留中のタスクをキャンセルします

handler_ins.removeCallbacksAndMessages(null) 

:それとも、ActivityAのonPause()で使用することができます。

+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); 

、ユーザーが活動Cボタンをクリックしたときだけハンドラをキャンセルオープンの新しい活動

myHandler.removeCallbacks(runnable); 
0

前にボタンのクリックでそれを使用しています。

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

関連する問題