Android 旋转时隐藏片段内容 phone
Android hide fragment content when rotate phone
在我的应用程序中,我使用支持视图寻呼机和 PagerTabStrip。进入查看寻呼机我有一些片段,进入其中一个我正在使用支持卡片视图。 运行 应用程序后,所有卡片视图项目都正确显示,但在 phone 从纵向到横向旋转后,内容隐藏。
更新:
MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.inject(this);
Globals.setActivity(this);
contentFragment = ContentFragment.newInstance(R.drawable.ic_launcher);
getSupportFragmentManager().beginTransaction()
.replace(R.id.frame_container, contentFragment)
.commit();
current_fragment_id = 0;
updateFragment(current_fragment_id);
drawer_adatper =
new DrawerAdatper(
this, R.layout.drawer_item_layout, R.layout.drawer_item_group_layout, drawer_items);
drawer_list.setAdapter(drawer_adatper);
}
ContentFragment
片段:
public class ContentFragment extends Fragment implements ScreenShotable {
public static ContentFragment newInstance(int page) {
ContentFragment fragmentFirst = new ContentFragment();
Bundle args = new Bundle();
args.putInt("page", page);
fragmentFirst.setArguments(args);
return fragmentFirst;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
page = getArguments().getInt("page", 0);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_online_categories, container, false);
ButterKnife.inject(this, view);
initializeUi();
pager_header.setTabIndicatorColor(Color.parseColor(Arrays.asList(pageTabIndicatorColors).get(0)));
BootStrapPagerAdapter adapterViewPager = new BootStrapPagerAdapter(getActivity().getSupportFragmentManager());
return view;
}
public static class BootStrapPagerAdapter extends FragmentPagerAdapter {
private static int NUM_ITEMS = 8;
public BootStrapPagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return FragmentContactList.newInstance(0);
}
}
@Override
public CharSequence getPageTitle(int position) {
String title = "";
switch (position) {
case 0:
title = Utils.getString(R.string.section_industry);
break;
}
return title;
}
}
}
FragmentContactList
:
public class FragmentContactList extends Fragment {
private StackTraceElement[] traceElements = Thread.currentThread().getStackTrace();
private int page;
RecyclerView rv;
private List<Person> persons;
public static FragmentContactList newInstance(int page) {
FragmentContactList fragmentFirst = new FragmentContactList();
Bundle args = new Bundle();
args.putInt("page", page);
fragmentFirst.setArguments(args);
return fragmentFirst;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
page = getArguments().getInt("page", 0);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.recyclerview_activity, container, false);
rv = (RecyclerView) view.findViewById(R.id.rv);
LinearLayoutManager llm = new LinearLayoutManager(getActivity());
rv.setLayoutManager(llm);
rv.setHasFixedSize(true);
initializeData();
initializeAdapter();
return view;
}
private void initializeData(){
persons = new ArrayList<>();
persons.add(new Person("Emma Wilson", "23 years old", R.drawable.icon_inbox));
persons.add(new Person("Lavery Maiss", "25 years old", R.drawable.icon_inbox));
persons.add(new Person("Lillie Watts", "35 years old", R.drawable.icon_inbox));
}
private void initializeAdapter(){
RVAdapter adapter = new RVAdapter(persons);
rv.setAdapter(adapter);
}
@Override
public void onResume() {
super.onResume();
getView().invalidate();
}
}
你应该改变
public static class BootStrapPagerAdapter extends FragmentPagerAdapter
至
public static class BootStrapPagerAdapter extends FragmentStatePagerAdapter
您可以从这里查看它们之间的区别:
Difference between FragmentPagerAdapter and FragmentStatePagerAdapter
在我的应用程序中,我使用支持视图寻呼机和 PagerTabStrip。进入查看寻呼机我有一些片段,进入其中一个我正在使用支持卡片视图。 运行 应用程序后,所有卡片视图项目都正确显示,但在 phone 从纵向到横向旋转后,内容隐藏。
更新:
MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.inject(this);
Globals.setActivity(this);
contentFragment = ContentFragment.newInstance(R.drawable.ic_launcher);
getSupportFragmentManager().beginTransaction()
.replace(R.id.frame_container, contentFragment)
.commit();
current_fragment_id = 0;
updateFragment(current_fragment_id);
drawer_adatper =
new DrawerAdatper(
this, R.layout.drawer_item_layout, R.layout.drawer_item_group_layout, drawer_items);
drawer_list.setAdapter(drawer_adatper);
}
ContentFragment
片段:
public class ContentFragment extends Fragment implements ScreenShotable {
public static ContentFragment newInstance(int page) {
ContentFragment fragmentFirst = new ContentFragment();
Bundle args = new Bundle();
args.putInt("page", page);
fragmentFirst.setArguments(args);
return fragmentFirst;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
page = getArguments().getInt("page", 0);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_online_categories, container, false);
ButterKnife.inject(this, view);
initializeUi();
pager_header.setTabIndicatorColor(Color.parseColor(Arrays.asList(pageTabIndicatorColors).get(0)));
BootStrapPagerAdapter adapterViewPager = new BootStrapPagerAdapter(getActivity().getSupportFragmentManager());
return view;
}
public static class BootStrapPagerAdapter extends FragmentPagerAdapter {
private static int NUM_ITEMS = 8;
public BootStrapPagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return FragmentContactList.newInstance(0);
}
}
@Override
public CharSequence getPageTitle(int position) {
String title = "";
switch (position) {
case 0:
title = Utils.getString(R.string.section_industry);
break;
}
return title;
}
}
}
FragmentContactList
:
public class FragmentContactList extends Fragment {
private StackTraceElement[] traceElements = Thread.currentThread().getStackTrace();
private int page;
RecyclerView rv;
private List<Person> persons;
public static FragmentContactList newInstance(int page) {
FragmentContactList fragmentFirst = new FragmentContactList();
Bundle args = new Bundle();
args.putInt("page", page);
fragmentFirst.setArguments(args);
return fragmentFirst;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
page = getArguments().getInt("page", 0);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.recyclerview_activity, container, false);
rv = (RecyclerView) view.findViewById(R.id.rv);
LinearLayoutManager llm = new LinearLayoutManager(getActivity());
rv.setLayoutManager(llm);
rv.setHasFixedSize(true);
initializeData();
initializeAdapter();
return view;
}
private void initializeData(){
persons = new ArrayList<>();
persons.add(new Person("Emma Wilson", "23 years old", R.drawable.icon_inbox));
persons.add(new Person("Lavery Maiss", "25 years old", R.drawable.icon_inbox));
persons.add(new Person("Lillie Watts", "35 years old", R.drawable.icon_inbox));
}
private void initializeAdapter(){
RVAdapter adapter = new RVAdapter(persons);
rv.setAdapter(adapter);
}
@Override
public void onResume() {
super.onResume();
getView().invalidate();
}
}
你应该改变
public static class BootStrapPagerAdapter extends FragmentPagerAdapter
至
public static class BootStrapPagerAdapter extends FragmentStatePagerAdapter
您可以从这里查看它们之间的区别: Difference between FragmentPagerAdapter and FragmentStatePagerAdapter