1

Основная проблема возникает после переключения с первой вкладки на вторую. В обоих вкладках должны быть разные ListViews, но, кажется, это issue Мой код активность:Отображение проблем ListViews в TAB

public class MainActivity extends Activity { 

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

     ActionBar actionBar = getActionBar(); 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

     ActionBar.Tab tabFirst = actionBar.newTab().setText("First"); 
     ActionBar.Tab tabSecond = actionBar.newTab().setText("Second"); 

     tabFirst.setTabListener(new tabListener()); 
     tabSecond.setTabListener(new tabListener()); 

     actionBar.addTab(tabFirst); 
     actionBar.addTab(tabSecond); 

     } 

    protected class tabListener implements ActionBar.TabListener { 

     ParkFragment firstFragment; 
     ParkFragment secondFragment; 


     @Override 
     public void onTabUnselected(Tab tab, FragmentTransaction ft) { 

     } 

     @Override 
     public void onTabSelected(Tab tab, FragmentTransaction ft) { 
      switch (tab.getPosition()){ 
      case 0: 
       if (firstFragment == null){ 
        firstFragment = new ParkFragment("Here is first url"); 
        ft.add(R.id.parkfragment, firstFragment,"FIRST"); 
       } 
       else{ 
        ft.attach(firstFragment); 
       } 
       break; 

      case 1: 
       if (secondFragment == null){ 
        secondFragment = new ParkFragment("here is the second one"); 
        ft.add(R.id.parkfragment, secondFragment, "SECOND"); 
       } 
       else{ 
        ft.attach(secondFragment); 
       } 
       break; 
      } 
     } 

     @Override 
     public void onTabReselected(Tab tab, FragmentTransaction ft) { 

     } 
    }; 

    public class ParkFragment extends ListFragment { 
     private ArrayList<Cinemas> cinema; 
     private CinemasAdapter cinemaAdapter; 
     private View v; 
     private String url; 

     public ParkFragment (String cinema){ 
      url = cinema; 
     } 

      public void onCreate(Bundle savedInstanceState) { 
      super.onActivityCreated(savedInstanceState); 

      cinema = new Handler().handle(url); 
      cinemaAdapter = new CinemasAdapter(MainActivity.this, R.layout.movie_data_row, cinema); 
      setListAdapter(cinemaAdapter); 

      } 
     } 

А вот контейнер код XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:baselineAligned="false" 
    android:orientation="vertical" > 

    <FrameLayout 
     android:id="@+id/parkfragment" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" /> 

</LinearLayout> 

Спасибо за чтение, любая помощь будет оценена.

ответ

0

Вам необходимо вместе с добавлением/прикреплением фрагмента, скрывающего другой.

public void onTabSelected(Tab tab, FragmentTransaction ft) { 
     switch (tab.getPosition()){ 
     case 0: 
      if (firstFragment == null){ 
       firstFragment = new ParkFragment("Here is first url"); 
       ft.add(R.id.parkfragment, firstFragment,"FIRST"); 
      } 
      else{ 
       ft.attach(firstFragment); 
      } 
      if (secondFragment != null) 
       ft.hide(secondFragment); 
      break; 

     case 1: 
      if (secondFragment == null){ 
       secondFragment = new ParkFragment("here is the second one"); 
       ft.add(R.id.parkfragment, secondFragment, "SECOND"); 
      } 
      else{ 
       ft.attach(secondFragment); 
      } 
      if (firstFragment != null) 
       ft.hide(firstFragment); 
      break; 
     } 
    } 
+0

То же самое происходит :(Может быть, я должен создавать различные представления для каждого фрагмента? Если да, то как я должен реализовать, что в классе ParkFragment? –

1
/** Detaches the androidfragment if exists */ 

       if(secondFragment !=null) 
        ft.detach(secondFragment); 

       /** Detaches the applefragment if exists */ 
       if(firstFragment !=null) 
        ft.detach(firstFragment); 

Используйте этот один открепление фрагмент see this