Фрагмент 2 запускается перед фрагментом 1 в Android

#android #android-fragments

#Android #android-фрагменты

Вопрос:

Я создал три фрагмента за одно действие с использованием FragmentPagerAdapter.В первом фрагменте я использовал нажатие кнопки переместить на второй фрагмент.Во время отладки сначала он запускался до 3-го фрагмента, а затем только возвращался ко 2-му фрагменту.

   public class Main_Activity extends AppCompatActivity {
DrawerLayout mDrawerLayout;

FragmentManager mFragmentManager;
FragmentTransaction mFragmentTransaction;

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

    /**
     *Setup the DrawerLayout and NavigationView
     */

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
    mNavigationView = (NavigationView) findViewById(R.id.shitstuff);

    /**
     * Lets inflate the very first fragment
     * Here , we are inflating the TabFragment as the first Fragment
     */

    mFragmentManager = getSupportFragmentManager();
    mFragmentTransaction = mFragmentManager.beginTransaction();
    mFragmentTransaction.replace(R.id.containerView, new TabFragment()).commit();
    /**
     * Setup click events on the Navigation View Items.
     */


    android.support.v7.widget.Toolbar toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.toolbar);
    ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.app_name,
            R.string.app_name);

    mDrawerLayout.setDrawerListener(mDrawerToggle);

    mDrawerToggle.syncState();

}
  

}

 public class HomeFragment extends Fragment {

FragmentManager mFragmentManager;
FragmentTransaction mFragmentTransaction;
ViewPager viewPager;

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

    View rootView = inflater.inflate(R.layout.home_layout, container, false);
    FragmentManager fm = getActivity().getSupportFragmentManager();
    viewPager = (ViewPager) getActivity().findViewById(R.id.viewpager);
    viewPager.setCurrentItem(0);
    final Button bt_view = (Button) rootView.findViewById(R.id.BT_view);
    bt_view.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(getActivity(), BookList_Activity.class));

        }
    });
    final Button bt_add = (Button) rootView.findViewById(R.id.BT_AddBook);
    bt_add.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {



            viewPager = (ViewPager) getActivity().findViewById(R.id.viewpager);
            viewPager.setCurrentItem(1);
        }
    });


    return rootView;
}
  

}

 public class SecondFragment extends Fragment implements View.OnClickListener {


Button bt_next;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.selectlocation_layout, container, false);


    // Inflate the layout for this fragment
    bt_next = (Button) rootView.findViewById(R.id.BT_continue);


    // Implement OnClick,OnTouch and OnItemSelected Events

    //OnItemSelected Listner


    // OnClick Listner
    bt_next.setOnClickListener(this);


    return rootView;
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.BT_continue:

                viewPager = (ViewPager) getActivity().findViewById(R.id.viewpager);
                viewPager.setCurrentItem(2);

            break;

    }
}
  

}

 public class ThirdFragment extends Fragment implements View.OnClickListener, View.OnTouchListener {
  

Просмотр rootView;

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


        rootView = inflater.inflate(R.layout.addbook_layout, container, false);

    return rootView;
}
  

}

Комментарии:

1. пожалуйста. делайте это шаг за шагом. отредактируйте свой вопрос, используя это: 1) что вы хотите 2) что вы пробовали 3) какая проблема отображается. Это действительно сбивает с толку, и, честно говоря, я не могу понять никакого смысла в этом вопросе..

2. Где вы используете FragmentManager fm = getActivity().getSupportFragmentManager(); ?

3. где вы устанавливаете адаптер для своего пейджера просмотра ?!

4. Спасибо за ответ. объявление адаптера было ошибкой. Я получил ответ.

Ответ №1:

Установите viewPager.setCurrentItem(0); в вашем onCreateView() методе.