안드로이드 viewpager질문드립니다.
조회수 1410회
public class MainActivity extends AppCompatActivity {
MovieDetailFragment movieDetailFragment;
MovieInfoFragment movieInfoFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
movieDetailFragment = new MovieDetailFragment();
movieInfoFragment = new MovieInfoFragment();
getSupportFragmentManager().beginTransaction().add(R.id.container, movieInfoFragment).commit();
}
public void replaceMovieInfoFragment(){
getSupportFragmentManager().beginTransaction().replace(R.id.container, movieDetailFragment).addToBackStack(null).commit();
}
}
==============================================================================
public class MovieInfoFragment extends Fragment{
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.movie_info_fragment, container, false);
ViewPager viewPager = rootView.findViewById(R.id.pager);
viewPager.setOffscreenPageLimit(5);
ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager());
ViewPager1 viewPager1 = new ViewPager1();
adapter.addItems(viewPager1);
ViewPager2 viewPager2 = new ViewPager2();
adapter.addItems(viewPager2);
ViewPager3 viewPager3 = new ViewPager3();
adapter.addItems(viewPager3);
ViewPager4 viewPager4 = new ViewPager4();
adapter.addItems(viewPager4);
ViewPager5 viewPager5 = new ViewPager5();
adapter.addItems(viewPager5);
viewPager.setAdapter(adapter);
return rootView;
}
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
ArrayList<Fragment> items = new ArrayList<Fragment>();
public void addItems(Fragment fragment) {
items.add(fragment);
}
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return items.get(position);
}
@Override
public int getCount() {
return items.size();
}
}
==============================================================================
public class ViewPager1 extends Fragment{
@Override
public void onDetach() {
super.onDetach();
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.view_pager1, container, false);
Button button = rootView.findViewById(R.id.button2);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((MainActivity)getActivity()).replaceMovieInfoFragment();
}
});
return rootView;
}
}
============================================================================== ViewPager1에서 버튼을 눌러 movieDetailFragment로 이동 후 뒤로가기를 누르게 되면 movieInfo액티비티에서 Viewpager가 새로 생성이 되지않아 빈화면이 나오게 됩니다. Viewpager를 갱신하거나 새로고침 하는 방법이 있을까요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
유사하게 테스트 코드를 작성하여 테스트 해봤는데 문제없이 잘 동작하네요..
일단 작성자님의 코드를 보니
android.app.Fragment
를 사용하고 계신것 같은데android.support.v4.app
package 를 사용하시기 바랍니다. 또한 한가지 의심되는 부분은ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager());
이부분인데
getFragmentManager()
가 아닌getChildFragmentManager()
를 사용해야 할것 같습니다.-
(•́ ✖ •̀)
알 수 없는 사용자
- 해결했습니다!! getChildFragmentManager() 을 사용하니 정상적으로 작동합니다 ㅠㅠ 알 수 없는 사용자 2018.7.17 11:40
- 그리구 혹시 viewpager에서 back 키를 누르면 앱이 종료가 안되고 다시 info빈화면이 나오는데 방법이 있나요? 알 수 없는 사용자 2018.7.17 11:43
- 음 그건 또 이상하네요 ㅋㅋ.. 알 수 없는 사용자 2018.7.17 11:51
- 하나고치면 하나가 말썽이고 머리아프네요 ㅠㅠㅠ 알 수 없는 사용자 2018.7.17 12:27
- 지금 잘작동됩니다!! 알 수 없는 사용자 2018.7.17 12:28
- 잘되셔서 다행이네요 :) 알 수 없는 사용자 2018.7.17 12:56
-
댓글 입력