2016-05-04 5 views
1

Ich möchte eine Anwendung entwickeln, die am Anfang den Wert einer Variablen überprüft und basierend auf diesem Wert die Aktivität A oder die Aktivität B startet, etwa so :Der beste Weg, um die eine oder andere Aktivität auf Basis einer Variablen zu starten

protectec void onCreate(...){ 
    boolean b = checkVariable(); 

    if(b){ 
     startActivityA(); 
    } else { 
     startActivityb(); 
    } 
} 

Was

Dies ist ich mache die Methode, die ich zur Zeit umgesetzt haben:

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

    varChecker = new VarChecker(this); 

    if(varChecker.getRemainingUses() <= 0){ 
     limitReached(); 
    } else if(varChecker.isFirstTime()){ 
     firstTime(); 
    } else { 
     startMainActivity(); 
    } 
} 

Dies ist eine Aktivität, die das erste Mal die applicat gezeigt werden müssen Ion wird ausgeführt. Sonst muss es, abhängig vom Ergebnis getRemainingUses(), die Aktivität A oder die Aktivität B automatisch starten.

Die Frage

Gibt es eine Möglichkeit zu tun, was ich will, ohne die Notwendigkeit, eine neue Aktivität erstellen, speziell die super.onCreate(savedInstanceState) und die setContentView(R.layout.activity_limitation) zu vermeiden?

+1

statt Aktivitäten sollten Sie Fragmente verwenden, die –

+1

ersetzt werden sollen, weiß ich nicht, ob es möglich ist, super.onCreate() zu überspringen, aber Sie können setContentView() und rufen finish() überspringen und Zurückkehren, nachdem Sie Ihre zweite Aktivität gestartet haben. –

+0

Nehmen Sie nur eine Aktivität und fügen Sie basierend auf Ihren Berechnungen Fragmente zu dieser Aktivität hinzu. Aktivitäts-Fragment ist besser als Aktivität-Aktivität in einem Sinne, dass deine Aktivität diese Sache nicht nur ausführen wird. –

Antwort

0

Gibt es eine Möglichkeit zu tun, was ich will, ohne die Notwendigkeit, eine neue Aktivität zu schaffen, speziell die super.onCreate (savedInstanceState) und die setContentView (R.layout.activity_limitation) zu vermeiden?

Ich hatte vor einiger Zeit ein ähnliches Problem. Soweit ich weiß, ist es nicht möglich zu vermeiden, super.onCreate(savedInstance) und setContentView(R.layout.activity_limitation) zu rufen. Es ist Design der Android-Aktivität.

Ich sehe folgende mögliche Lösungen:

  1. , wenn Sie eine entsprechende Aktivität von beispielsweise wählen möchten Klicken Sie auf eine Schaltfläche, dann müssen Sie nur eine neue Absicht basierend auf einer Variable erstellen und es gibt kein Problem.
  2. Wenn Sie eine Aktivität in einen anderen Zeitpunkt des Flusses auswählen möchten - z. während der Anwendung starten können Sie:
    • eine einzige Aktivität für zwei Optionen erstellen, verwenden Fragmente und zwischen ihnen wechseln
    • schaffen „Dummy“ Aktivität mit einem leeren Layout, erstellen Sie eine Absicht und wechseln Sie auf eine entsprechende Aktivität gründend auf eine Variable und beenden "Dummy" -Aktivität. Bitte beachten Sie, dass diese Lösung eine Art Workaround ist und es sich lohnt, etwas Zeit zu investieren, um etwas Besseres herauszufinden, aber ich bin mir nicht sicher, ob es eine empfohlene Lösung für solche Anwendungsfälle gibt.
Verwandte Themen