Frage

Ich habe eine Frage in Bezug auf neue Aktivitäten starten. Es läuft darauf hinaus, diese nach unten. Ich habe 3 Tabs auf einen Blick

A) contains gMap activity
 B) camera activity
 C) some random text fields.

Voraussetzung ist, dass die Anwendung im Hochformat-Modus ausgeführt wird.

Alle drei Registerkarten arbeiten als w / Ausnahme der Kameravorschau Oberfläche (B) erwartet. Es wird um 90 Grad gedreht. Sie einzige Weg, es richtig zu machen, ist die App-Landschaft zu setzen, die sich um alle meine Tabs wirft, und ist so ziemlich undurchführbar.

Meine Lösung ist dies: ersetzen

meine Kamera-Aktivität mit einer regelmäßigen Tätigkeit, die w / Ausnahme von

leer ist
Intent i = new Intent(this,CameraActivity.class);
    startActivity(i);

Das startet mein CameraActivity. Und das funktioniert gut. Ich hatte eine lineare Layout zu tun und sind 3 Bilder, die wie echte Tabs aussehen, so kann ich beim Drehen des Bildschirms auf Landschaft und halten die Visuals als Porträt des Betriebs der Registerkarten versuchen und imitieren. Der Benutzer kann eines der Bilder (Tasten) klicken Sie auf den nächsten Reiter angezeigt werden soll. Das ist mein Problem. Es soll meine ‚Kamera Tätigkeit‘ Rückkehr in die ‚leeren Aktivität‘ in einem Register verlassen, wo sie interpretiert werden sollen, die desiered Registerkarte von meinem Bild zu klicken.

Die Hauptsache ist, wenn er zurückkehrt, gibt er zu einer leeren (schwarz) Seite unter einem Tab (weil es ‚leer‘ ist). Wie kann ich die Rückkehr Ereignis zurück auf die Seite erfassen, die die Aktivität genannt, und dann sehen, welche Maßnahmen sie durchgeführt?

Ich kann einen OnClickListener gesetzt, wo ich auf das gefälscht Tabs reagieren kann (Bilder) verlassen aus der Kamera-Aktivität angeklickt wird. Am Ausgang sollten die Registerkarte aktualisieren, damit ist, wo Sie zurückkommen. Irgendwelche Vorschläge?

Danke,

War es hilfreich?

Lösung

ich auf die Beantwortung konzentrieren werde, wie Ihr workround zu lösen, so dass es sich verhält, wie Sie wollen.

Aktionen auf eine Aktivität durchgeführt, um zu erfassen innerhalb eines anderen erfordert drei Schritte.

Starten Sie die Sekundäraktivität (Ihre 'Kamera Activity') als Teilaktivität von startActivityForResult statt startActivity verwendet wird.

Intent i = new Intent(this,CameraActivity.class);    
startActivityForResult(i, STATIC_INTEGER_VALUE);

Im Rahmen der Unteraktivität (Kamera Aktivität), anstatt nur die Aktivität zu schließen, wenn ein Benutzer auf die andere Registerkarte Bild klickt, müssen Sie eine neue Intent erstellen und beinhalten den Index des Registerkarte anzuzeigen, wenn Sie an der Mutter App zurückkehren mit Extras bündeln. Um es zurück an die Mutter Anruf setResult passieren, bevor finish Aufruf der Kamera Aktivität zu schließen.

resultIntent = new Intent(null);
resultIntent.putExtra(PUBLIC_STATIC_STRING_IDENTIFIER, tabIndexValue);
setResult(Activity.RESULT_OK, resultIntent);
finish();

Der letzte Schritt ist in der anrufenden Aktivität, außer Kraft setzt onActivityResult für Rückrufe von der Kamera Aktivität zu hören. Holen Sie sich das Extra aus dem zurück Intent den Index der Registerkarte, um festzustellen, sollten Sie werden angezeigt wird.

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) {     
  super.onActivityResult(requestCode, resultCode, data); 
  switch(requestCode) { 
    case (STATIC_INTEGER_VALUE) : { 
      if (resultCode == Activity.RESULT_OK) { 
      int tabIndex = data.getIntExtra(PUBLIC_STATIC_STRING_IDENTIFIER);
      // TODO Switch tabs using the index.
      } 
      break; 
    } 
  } 
} 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top