2

У меня есть 2 вкладки в моем приложении. Каждый из них имеет один fragment.замените фрагмент на вкладке (без просмотра)

Сценарий 1 (таб 1): Я «м добавление второго fragment на вкладке на Button Нажмите от первого fragment & снова третий fragment на кнопку мыши из второй fragment.

Сценарий 2 (таблица 2): Аналогично, как tab1

Сценарий 2 (Переключение между Tab): Как я переключаться между tab.I'm смог же вкладке фрагмент, который я добавил в соответствующую вкладку.

Ниже мой код: (Первый фрагмент Tab1)

public class ArticleFragment extends Fragment { 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 

      ViewGroup view=(ViewGroup) inflater.inflate(R.layout.article_fragment, container,false); 
      fragmentTabHost.setup(getActivity(), getChildFragmentManager() , R.id.frag_container); 

      Button article_button = (Button) view.findViewById(R.id.article_btn); 

      article_button.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 

        FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); 
        article_txt.setText("Changed Value"); 

        ArticleDetails articleFragment = new ArticleDetails(); 
        fragmentTransaction.add(ScreenFragmentActivity.getContainertId(), articleFragment, AppConstants.ARTICLE_FRAGMENT_DETAILS); 
        fragmentTransaction.hide(ArticleFragment.this); 
        fragmentTransaction.addToBackStack(ArticleFragment.class.getName()); 

        fragmentTransaction.commit(); 

       } 
      }); 
     return view; 
    } 
} 

Второй фрагмент Tab1:

public class ArticleDetails extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 

     ViewGroup view=(ViewGroup) inflater.inflate(R.layout.article_details, container,false); 
     Button article_button = (Button) view.findViewById(R.id.article_details_btn); 

     article_button.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); 
       ArticleDetailsWithIn articleFragment = new ArticleDetailsWithIn(); 
       fragmentTransaction.add(ScreenFragmentActivity.getContainertId(), articleFragment, 
AppConstants.ARTICLE_FRAGMENT_DETAILS_WITHIN); 
       fragmentTransaction.hide(ArticleDetails.this); 
       fragmentTransaction.addToBackStack(null); 

       fragmentTransaction.commit(); 

      } 
     }); 

     return view; 
    } 

Мой Компоновка:

<android.support.v4.app.FragmentTabHost 
     android:id="@+id/tabhost" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical" > 

      <TabWidget 
       android:id="@+id/tabs" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="0" 
       android:orientation="horizontal" /> 

      <FrameLayout 
       android:id="@+id/tabcontent" 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_weight="1" /> 

     </LinearLayout> 
</android.support.v4.app.FragmentTabHost> 

Поэтому в основном я пытаюсь добавить новый фрагмент на вкладке. Но на коммутаторе я не могу сохранить свой соответствующий фрагмент

ответ

0

Вы можете попробовать это - пометьте свои фрагменты каким-либо именем и сохраните его в любом статическом вспомогательном классе с использованием метода getter/setter. Сделайте свое первое имя тега фрагмента по умолчанию (это для первого запуска). Затем в месте, где у вас есть логика для добавления новых фрагментов, поставьте необходимые инструкции if-else. То же самое касается и других вкладок. (вы можете даже использовать общие настройки, если хотите запомнить последний увиденный фрагмент, даже когда приложение закрыто и снова перезапущено.)

Создайте статический класс-помощник.

public class HelperClass { 
    private static string TabOneFragmentOnScreen = ""; 

    public static String getTabOneFragmentOnScreen() { 
    return TabOneFragmentOnScreen ; 
} 
public static void setTabOneFragmentOnScreen(
     String TabOneFragmentOnScreen) { 
    HelperClass.TabOneFragmentOnScreen = TabOneFragmentOnScreen; 
} 
} 

При нажатии одной Табоне

if(HelperClass.getTabOneFragmentOnScreen.equals("")){ 
    HelperClass.setTabOneFragmentOnScreen("FragmentOne"); 
    //logic to add fragment one goes here 
} 

if(HelperClass.getTabOneFragmentOnScreen.equals("FragmentTwo")){ 
    HelperClass.setTabOneFragmentOnScreen("FragmentTwo"); 
    //logic to add fragment two goes here 
} 

Таким образом, он всегда будет помнить последний фрагмент на экране на вкладке один.

Этот код не является полным, но вы можете продолжить разработку этой логики.

+0

мог бы опубликовать некоторые фрагменты, чтобы сделать его более кратким – nitesh

Смежные вопросы