Android: Zachycení návrat činnosti

hlasů
78

Mám dotaz ohledně zavádění nových činností. Je scvrkává na to. Mám 3 záložky v pohledu

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

Podmínkou je, že aplikace běží v režimu na výšku.

Všechny 3 Karty fungovat podle očekávání w / výjimkou náhledu fotoaparátu povrchu (B). Se otáčí o 90 stupňů. Jejich jediný způsob, jak to správné, je nastavit aplikaci do krajiny, která hází všechny své záložky kolem, a je do značné míry nepoužitelný.

Moje řešení je toto: nahradit

můj fotoaparát činnost s pravidelnou činnost, která je prázdná w / výjimkou

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

Tím se spustí svůj CameraActivity. A že funguje dobře. Musel jsem to udělat lineárního rozložení a celkem 3 snímky, které vypadají jako skutečné kartách, takže můžu pokusit napodobit provoz karet při otáčení displeje na šířku a udržet vizuální efekty jako portrét. Uživatel může kliknout na jednu z (tlačítek) Snímky se zobrazí další kartu. To je můj problém. Je třeba ukončit svou činnost ‚kamery‘ návratu do ‚slepého činnost‘ v záložce, kde by měl být vykládán kliknout na záložku desiered z mého obrazu.

Hlavní věc je, že když se vrátí, vrátí se prázdný (černý) straně pod jazýčkem (protože je ‚prázdná‘). Jak mohu zachytit návratovou akci zpět na stránku, která volala aktivitu, a pak zjistit, jaké kroky jsou prováděny?

Mohu nastavit onclicklistener kde mohu reagovat na falešné karet (obrázky) jsou kliknuli k ukončení činnosti fotoaparátu. Na výstupu, karta by měl aktualizovat tak, že je místo, kde se vrátíte. nějaké návrhy?

Dík,

Položena 16/01/2009 v 05:05
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
155

Budu soustředit na odpovědi, jak vyřešit váš workround tak, že se chová tak, jak chcete.

K zachycení akce prováděné na jedné aktivity v rámci druhého vyžaduje tři kroky.

Zahájit vedlejší činnost (vaše ‚kamera činnost‘) jako subactivity pomocí startActivityForResultmísto startActivity.

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

V rámci subactivity (kamera činnosti), spíše než jen zavírání aktivitu, když uživatel klepne na jinou kartu obraz, je nutné vytvořit nový Intent a zahrnují index kartě se zobrazí, když se vrátíte do nadřazené aplikace pomocí extras svazku , Předat jej zpět na původní hovor setResultpřed voláním finishukončit činnost fotoaparátu.

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

Posledním krokem je v volající aktivity, přepsat onActivityResultposlouchat zpětná volání z kamery aktivity. Získejte extra od vráceného záměru určit index kartu, měli byste být zobrazování.

@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; 
    } 
  } 
} 
Odpovězeno 16/01/2009 v 09:20
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more