#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()
методе.