2016-07-27 13 views
0

Ich habe eine Aktivität A, die Schaltfläche hat, wenn Sie nicht auf diese Schaltfläche klicken, dann muss eine andere Aktivität B nach einer bestimmten Zeit und wenn Sie auf klicken auf der Schaltfläche muss die Aktivität C geöffnet werden, aber die Aktivität B sollte nicht geöffnet werden. Ich habe Handler dafür verwendet, aber wenn ich auf eine Schaltfläche klicke, öffnet sich die Aktivität C, aber es öffnet auch die Aktivität B nach dem Zeitlimit.Android-Wie zu 2 verschiedenen Aktivitäten von einer Aktivität verschieben

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

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

Sie können Flagge mit Absicht übergeben oder überprüfen Condition – KrishnaJ

Antwort

0

Sie können diesen Knopf überprüfen geklickt wird dann geöffnet Aktivität C sonst Aktivität B und nach Klick Boolesche Variable falsch oder wahr

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

Sie einen Booleschen Wert einstellen, wenn die Schaltfläche geklickt wird, ‚loadActivityC = falsch '. Erklären Sie es zunächst als wahr. Dann, wenn (loadActivityC), starte die Aktivität mit der Absicht.

1

Sie müssen eine Flagge verwenden. Sie können Ihren Code als

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

schreiben Ihr Handler-Code zum Öffnen der AktivitätB wird trotzdem ausgeführt, auch wenn Sie zu anderen Aktivitäten wechseln. Sie sollten eine Variable erstellen, um zu prüfen, ob andere Aktivitäten offen sind oder nicht. Oder Sie können in onPause() von ACTIVITYA verwenden:

handler_ins.removeCallbacksAndMessages(null) 

Dies wird Abbrechen aktuell anstehende Aufgaben-Handler direkt vor anderen Aktivitäten wechseln.

+0

Dies ist die perfekte Antwort. – SripadRaj

+0

es funktioniert !!! Danke – 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); 

und es verwenden, auf die Schaltfläche klicken, bevor öffnen neue Aktivität

myHandler.removeCallbacks(runnable); 
0

einfach den Handler abbrechen, wenn der Benutzer auf die Aktivität C Schaltfläche klickt.

0

Sie können die Handler-Objekt machen und nach der Schaltfläche, um die Handler-Thread abzubrechen,

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

Und wenn Ihre Schaltfläche klicken, brechen Sie den Handler Rückruf,

myHandler.removeCallbacks(myRunnableObj); 
+0

Hallo Ich habe Ihren Code verwendet, aber es gibt mir einen Fehler, wenn ich myHandler.removeCallbacks (myRunnableObj); Innerhalb des onclick (Knopfes) – sandeep

+0

können Sie das Fehlerprotokoll teilen. –

+0

es funktioniert jetzt, danke !!!! – 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); 
      } 

     } 
    }); 
} 

es Hopes wird dir helfen.

+0

Ich habe versucht, hinzuzufügen, wie Sie sagten, aber es immer noch das gleiche – sandeep

+0

Ich führe den obigen Code und es funktioniert absolut gut für mich. :) –

+0

funktioniert jetzt, Danke !!!! – sandeep