2012-06-06 23 views
6

Używam próbki Androida, FragmentTabs.Ekran zakładki FragmentActivity Blackout

Powiedzmy, że istnieją 4 zakładki (A, B, C, D). Wymienić fragment zakładki (A) inny (e), przy użyciu tego kodu

FragmentTransaction transaction = getFragmentManager() 
       .beginTransaction(); 

     transaction.replace(R.id.realtabcontent, newFragment); 
     transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
     transaction.addToBackStack(null); 

     // Commit the transaction 
     transaction.commit(); 

w zakładce innym C, po naciśnięciu przycisku Back ekranu karty (A) stają się czarne.

+0

[Android Tabs z fragmentami] (http://android.codeandmagic.org/2011/07/android -tabs-with-fragments /) i Zobacz także stronę tego autora [Fragments] (http://developer.android.com/guide/topics/fundamentals/fragments.html) Hope it Helps. –

Odpowiedz

0

Zazwyczaj używam próbki Androida, FragmentTabs, do zarządzania kartami i nie doświadczyłem tego problemu. Bez pełnego kodu źródłowego trudno jest dokładnie określić, co się dzieje. Ale jeśli nie używasz FragmentTabs, możesz spróbować przeprowadzić migrację do tego, ponieważ została ona w pełni przetestowana;)

+0

Używam również tej próbki Androida. Ale wciąż dostaję ekran Blackout, jak opisałem powyżej. – asish

1

Najprawdopodobniej do pierwszego stosu dodajesz pierwszą transakcję Fragment. Kiedy dodajesz transakcję do tylnego stosu, oznacza to, że po powrocie użytkownika ostatnia transakcja zostanie odwrócona. Więc jeśli dodałeś Fragment A i usunął Fragment B, wciśnięcie go spowoduje usunięcie Fragmentu A i dodanie Fragmentu B (i przywrócenie niektórych zapisanych stanów dla Fragmentu B).

Do pierwszej transakcji dodajesz Fragment do Aktywności, więc cofnięcie spowoduje usunięcie Fragmentu, a więc nic nie wyświetli. Więc nie dodawaj pierwszej transakcji do tylnego stosu (Zakładając, że to zrobiłeś ... Nie mam pojęcia, ponieważ wkleiłeś tylko mały fragment kodu).

2

Witaj, Ashish ten problem ma miejsce, ponieważ fragment nie może zrozumieć normalnej aktywności wstecznej podczas normalnej aktywności po naciśnięciu klawisza wstecz, gdy ostatnio używane działanie zostanie automatycznie otwarte, ale fragment nie nastąpi po naciśnięciu przycisku Wstecz, więc musimy utrzymać powrotem wydarzenie w fragmencie tutaj dzielę kod z której jestem obsługi moją aktywność fragment tak może być, można sprawdzić to

public void onListItemClick(ListView l, View v, int position, long id) { 
     showDetail(position); 

    } 

    void showDetail(int position) { 
     this.position=position; 
     if(isDualPane){ 
      getListView().setItemChecked(position, true); 
      DetailFragment detailFragment = (DetailFragment) 
        getFragmentManager().findFragmentById(R.id.detail); 

      if (detailFragment == null || detailFragment.getIndex() != position) { 
       detailFragment = new DetailFragment(position); 
       FragmentTransaction ft =getFragmentManager().beginTransaction(); 
       ft.replace(R.id.detail, detailFragment); 
       ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
       ft.commit(); 
      } 

     } 
     else { 
      Intent intent =new Intent(); 
      intent.setClass(getActivity(),DetailActivity.class); 
      intent.putExtra("position", position); 
      startActivity(intent); 


     } 

patrz część innego pokazuje, że zamiarem jest utrzymanie moje fragmenty

proszę sprawdzić mój przykład (fragment z Gridview), które mam udział tutaj dla wszystkich użytkowników fragment znajdziecie coś pomocny od to

sprawdzić moją odpowiedź na ten link: How to Show Different Layouts inside Fragments

Powiązane problemy