怎么为fragment切换保存状态布局

Fragment设计初衷是为了简化不同屏幕分辨率的开发难度,他将代表一个功能的UI及其相关数据看做一个模块,以便达到复用。可以将Fragment看作是一个可以嵌入布局中的activity,有自己的生命周期。比如我现在在手机上有activityA和activityB,但是在平板上有更大的空间,可以将activityA和activityB的功能展示在同一个界面中,如果没有Fragment我们就无法在不改变代码的情况下将activityA和activityB的功能放在一起。Fragment的详细介绍请看:/a/anzhuokaifa/androidkaifa/3.html在这篇文章中我们先回忆一下他的用法:FragmentManager fragmentManager = getFragmentManager()
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
ExampleFragment fragment = new ExampleFragment();
fragmentTransaction.add(R.id.fragment_container, fragment);
mit();R.id.fragment_container是fragment要嵌入的布局控件id。当我想在另外的地方也嵌套一个ExampleFragment时,可以做同样的操作就能将UI拷贝一份,如果我们是想在R.id.fragment_container这个控件里面显示另外一个Fragment我们还可以用fragmentTransaction.replace(R.id.fragment_container, fragment2)来替换之前的fragment。由于可以在同一个地方动态的显示不同的UI,因此Fragment很适合拿来做如下的界面效果:上面的界面是百度云app的效果,每点击一个tab就切换成一个界面,我们可以很容易想到实现的原理就是点击一个tab 调fragmentTransaction.replace来替换成新的Fragment。但是频繁切换Fragment会导致频繁的释放和创建,如果Fragment比较臃肿或者需要从网络加载数据这样就非常不好了。replace方法是导致切换时重新创建Fragment的元凶,显然我们希望的是使用Fragment, 但是被替代的Fragment不要释放,以便下次切换回来直接就显示。我们知道ViewPager其实有个FragmentPagerAdapter, FragmentPagerAdapter不光可以用在ViewPager中,还可以用来作为Fragment的切换提供器,其实ViewPager中他的作用也是如此。FragmentPagerAdapter可以将很多个Fragment保存起来以供取出,并且封装了取出的接口,其实还是通过FragmentTransaction来实现的。我可以这样来实现百度云的效果,如何从FragmentPagerAdapter中取出fragment参考了ViewPager的源码:package com.nmbb.sample.
import android.os.B
import android.support.v4.app.F
import android.support.v4.app.FragmentA
import android.support.v4.app.FragmentPagerA
import android.view.V
import android.view.View.OnClickL
import poundB
import poundButton.OnCheckedChangeL
import android.widget.FrameL
import android.widget.RadioB
public class MainActivity extends FragmentActivity implements
OnCheckedChangeListener, OnClickListener {
private RadioButton mTab1;
private RadioButton mTab2;
private RadioButton mTab3;
private RadioButton mTab4;
private RadioButton mTab5;
private FrameLayout mC
public CompoundButton currentButtonV
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTab1 = (RadioButton) findViewById(R.id.radio_button0);
mTab2 = (RadioButton) findViewById(R.id.radio_button1);
mTab3 = (RadioButton) findViewById(R.id.radio_button2);
mTab4 = (RadioButton) findViewById(R.id.radio_button3);
mTab5 = (RadioButton) findViewById(R.id.radio_button4);
mContainer = (FrameLayout) findViewById(R.id.container);
mTab1.setOnCheckedChangeListener(this);
mTab2.setOnCheckedChangeListener(this);
mTab3.setOnCheckedChangeListener(this);
mTab4.setOnCheckedChangeListener(this);
mTab5.setOnCheckedChangeListener(this);
mTab1.setOnClickListener(this);
mTab2.setOnClickListener(this);
mTab3.setOnClickListener(this);
mTab4.setOnClickListener(this);
mTab5.setOnClickListener(this);
mTab1.performClick();
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
Fragment fragment = (Fragment) mFragmentPagerAdapter
.instantiateItem(mContainer, buttonView.getId());
mFragmentPagerAdapter.setPrimaryItem(mContainer, 0, fragment);
mFragmentPagerAdapter.finishUpdate(mContainer);
private FragmentPagerAdapter mFragmentPagerAdapter = new FragmentPagerAdapter(
getSupportFragmentManager()) {
public Fragment getItem(int position) {
switch (position) {
case R.id.radio_button1:
return FragmentTest.instantiation(2);
case R.id.radio_button2:
return FragmentTest.instantiation(3);
case R.id.radio_button3:
return FragmentTest.instantiation(4);
case R.id.radio_button4:
return FragmentTest.instantiation(5);
case R.id.radio_button0:
return FragmentTest.instantiation(1);
public int getCount() {
public void onClick(View v) {
// TODO Auto-generated method stub
}instantiateItem从FragmentManager中查找Fragment,找不到就getItem新建一个,setPrimaryItem设置隐藏和显示,最后finishUpdate提交事务。mContainer就是xml中的FrameLayout。FragmentTest的代码如下:package com.nmbb.sample.
import android.os.B
import android.support.v4.app.F
import android.view.LayoutI
import android.view.V
import android.view.ViewG
import android.widget.TextV
public class FragmentTest extends Fragment {
public static FragmentTest instantiation(int position) {
FragmentTest fragment = new FragmentTest();
Bundle args = new Bundle();
args.putInt("position", position);
fragment.setArguments(args);
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_test, container, false);
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
TextView text1 = (TextView) view.findViewById(android.R.id.text1);
text1.setText("Fragment " + getArguments().getInt("position", 1));
public void setMenuVisibility(boolean menuVisible) {
super.setMenuVisibility(menuVisible);
if (this.getView() != null)
this.getView().setVisibility(menuVisible ? View.VISIBLE : View.GONE);
}其中,下面的代码很关键,没有下面的代码会出现切换tab的时候重影现象:@Override
public void setMenuVisibility(boolean menuVisible) {
super.setMenuVisibility(menuVisible);
if (this.getView() != null)
this.getView().setVisibility(menuVisible ? View.VISIBLE : View.GONE);
上一篇: ios中对可以滚动的视图都在系统层面上实现了触碰到边缘的阻尼回弹效果,用户一看便知自己的操作已经到了边界。android中也有类似的方案,不过当到达边界的时候不是用阻尼的方式,而是逐渐显示一个渐变颜色。ios的那种体验无疑会友好很多,也许是当初ios吵着
下一篇: Caldroid是一个以月为单位展示日期的日历控件,主要功能在一个Fragment中。Caldroid既可以以Fragment的形式嵌套在布局中,也可以作为dialog fragment以对话框的形式展示出来。可以通过左右滑动切换月份。 Caldroid可以随意自定义属性,为了支持更多国家的实[android]如何实现与不同fragment的 ViewPager / 布局
当我开始活动,实现了 viewpager 时,viewpager 创建各种碎片。我想要对每个片段中,使用不同的布局,但问题是,viewpager 显示只有两个布局在最高 (第二次布局上的剩余的所有片段后 1)。
这里是SwipeActivity ,实现 viewpager 的代码:
public class SwipeActivity extends FragmentActivity
MyPageAdapter pageA
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_swipe);
pageAdapter = new MyPageAdapter(getSupportFragmentManager());
ViewPager pager=(ViewPager)findViewById(R.id.pager);
pager.setAdapter(pageAdapter);
ActionBar bar = getActionBar();
bar.setDisplayHomeAsUpEnabled(true);
private class MyPageAdapter extends FragmentPagerAdapter
public MyPageAdapter(FragmentManager fm)
super(fm);
public int getCount()
public Fragment getItem(int position)
switch(position)
case 0: return new MyFragment();
case 1: return SecondFragment.newInstance("asdasd");
default : return RamFragment.newInstance("s");
这里是的代码片段
public class MyFragment extends Fragment
public View onCreateView(LayoutInflater paramLayoutInflater, ViewGroup paramViewGroup,
Bundle paramBundle)
return paramLayoutInflater.inflate(R.layout.processorlayout, paramViewGroup, false);
我用 5 的片段,像这样,都有不同的布局,但 viewpager 显示只有 2 处最大。
编辑: SecondFragment 的代码
public class SecondFragment extends Fragment
public static final String EXTRA_MESSAGE = "EXTRA_MESSAGE";
public static final SecondFragment newInstance(String paramString)
SecondFragment f = new SecondFragment();
Bundle localBundle = new Bundle(1);
localBundle.putString("EXTRA_MESSAGE", paramString);
f.setArguments(localBundle);
public View onCreateView(LayoutInflater paramLayoutInflater, ViewGroup paramViewGroup, Bundle paramBundle)
return paramLayoutInflater.inflate(R.layout.motherboardlayout, paramViewGroup, false);
解决方法 1:
ViewPager 具有多个片段和布局文件-如何
以下是如何与不同片段类型和不同的布局文件实现 ViewPager 的一个完整的示例。
在这种情况下,我有 3 个片段类和每个教室的不同的布局文件为了保持事情简单,片段布局仅在其背景颜色不同。当然,任何布局文件可以用于片段。
FirstFragment.java 有一个橙色背景布局、 SecondFragment.java 有一个绿色的背景布局和 ThirdFragment.java 有一个红色的背景布局。此外,每个片段显示一个不同的文本,取决于哪个类的实例它和它是从是。
另外请注意我使用的支持库片段: android.support.v4.app.Fragment
MainActivity.java (初始化 Viewpager 和有适配器为它作为内部类)
import android.os.B
import android.support.v4.app.F
import android.support.v4.app.FragmentA
import android.support.v4.app.FragmentM
import android.support.v4.app.FragmentPagerA
import android.support.v4.view.ViewP
public class MainActivity extends FragmentActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager pager = (ViewPager) findViewById(R.id.viewPager);
pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
private class MyPagerAdapter extends FragmentPagerAdapter {
public MyPagerAdapter(FragmentManager fm) {
super(fm);
public Fragment getItem(int pos) {
switch(pos) {
case 0: return FirstFragment.newInstance("FirstFragment, Instance 1");
case 1: return SecondFragment.newInstance("SecondFragment, Instance 1");
case 2: return ThirdFragment.newInstance("ThirdFragment, Instance 1");
case 3: return ThirdFragment.newInstance("ThirdFragment, Instance 2");
case 4: return ThirdFragment.newInstance("ThirdFragment, Instance 3");
default: return ThirdFragment.newInstance("ThirdFragment, Default");
public int getCount() {
activity_main.xml (MainActivitys.xml 文件)
&android.support.v4.view.ViewPager
xmlns:android="/apk/res/android"
xmlns:app="/apk/res-auto"
android:id="@+id/viewPager"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
片段类FirstFragment.java
import android.support.v4.app.F
public class FirstFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.first_frag, container, false);
TextView tv = (TextView) v.findViewById(R.id.tvFragFirst);
tv.setText(getArguments().getString("msg"));
public static FirstFragment newInstance(String text) {
FirstFragment f = new FirstFragment();
Bundle b = new Bundle();
b.putString("msg", text);
f.setArguments(b);
first_frag.xml
&?xml version="1.0" encoding="utf-8"?&
&RelativeLayout xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_orange_dark" &
android:id="@+id/tvFragFirst"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:textSize="26dp"
android:text="TextView" /&
&/RelativeLayout&
SecondFragment.java
public class SecondFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.second_frag, container, false);
TextView tv = (TextView) v.findViewById(R.id.tvFragSecond);
tv.setText(getArguments().getString("msg"));
public static SecondFragment newInstance(String text) {
SecondFragment f = new SecondFragment();
Bundle b = new Bundle();
b.putString("msg", text);
f.setArguments(b);
second_frag.xml
&?xml version="1.0" encoding="utf-8"?&
&RelativeLayout xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_green_dark" &
android:id="@+id/tvFragSecond"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:textSize="26dp"
android:text="TextView" /&
&/RelativeLayout&
ThirdFragment.java
public class ThirdFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.third_frag, container, false);
TextView tv = (TextView) v.findViewById(R.id.tvFragThird);
tv.setText(getArguments().getString("msg"));
public static ThirdFragment newInstance(String text) {
ThirdFragment f = new ThirdFragment();
Bundle b = new Bundle();
b.putString("msg", text);
f.setArguments(b);
third_frag.xml
&?xml version="1.0" encoding="utf-8"?&
&RelativeLayout xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_red_light" &
android:id="@+id/tvFragThird"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:textSize="26dp"
android:text="TextView" /&
&/RelativeLayout&
最终的结果如下所示:
Viewpager 持有 5 片段片段 1 的类型 FirstFragment,和 first_frag.xml 布局,片段 2 是 SecondFragment 的类型和显示 second_frag.xml,和片段 3-5 显示是 ThirdFragment 类型的是所有显示 third_frag.xml。
以上您可以看到 5 片段之间,可以向左或向右切换通过刷卡。当然可以在同一时间显示只有一个片段。
最后但并非最不重要:
我建议您在每个片段班级中使用一个空的构造函数。怎么在Fragment的布局文件中的组件onclik调用Fragment的方法?
[问题点数:20分,结帖人zhouzhengting1]
怎么在Fragment的布局文件中的组件onclik调用Fragment的方法?
[问题点数:20分,结帖人zhouzhengting1]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关推荐:
2014年8月 移动开发大版内专家分月排行榜第三
2014年6月 移动开发大版内专家分月排行榜第一2014年3月 移动开发大版内专家分月排行榜第一
2014年11月 移动开发大版内专家分月排行榜第二2014年4月 移动开发大版内专家分月排行榜第二2014年2月 移动开发大版内专家分月排行榜第二
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。跪求高手解答!Fragment布局中的View概率性空指针
01:00:16&&&来源:&&&评论: 点击:
我用Viewpager+Fragment布局。
Viewpager和Fragment都是在Activity的onCreate初始化的。
用的是FragmentPagerAdapter,并且mViewPager.setOffscreenPageLimit(3)保证Fragment不会回收。
当程序最小化后,再恢复,此时对某一个Fragment布局中的View执行rotate属性动画会概率性的报出空指针异常。
java.lang.NullPointerException
at&com.mars.note.fragment.RecentRecordsFragment.runDrawerAnim(RecentRecordsFragment.java:1408)
at&com.mars.note.Main$1.onDrawerSlide(Main.java:102)
at&android.support.v4.widget.DrawerLayout.dispatchOnDrawerSlide(DrawerLayout.java:607)
at&android.support.v4.widget.DrawerLayout.setDrawerViewOffset(DrawerLayout.java:618)
at&android.support.v4.widget.DrawerLayout$ViewDragCallback.onViewPositionChanged(DrawerLayout.java:1510)
at&android.support.v4.widget.ViewDragHelper.dragTo(ViewDragHelper.java:1382)
at&android.support.v4.widget.ViewDragHelper.processTouchEvent(ViewDragHelper.java:1117)
at&android.support.v4.widget.DrawerLayout.onTouchEvent(DrawerLayout.java:1021)
at&android.view.View.dispatchTouchEvent(View.java:7714)
at&android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2210)
at&android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1945)
at&android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
at&android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
at&android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
at&android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
at&android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
at&android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
at&com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2068)
at&com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1515)
at&android.app.Activity.dispatchTouchEvent(Activity.java:2473)
at&com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2016)
at&android.view.View.dispatchPointerEvent(View.java:7894)
at&android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3986)
at&android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3865)
at&android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3426)
at&android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3476)
at&android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3445)
at&android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3552)
at&android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3453)
at&android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3609)
at&android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3426)
at&android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3476)
at&android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3445)
at&android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3453)
at&android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3426)
at&android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5571)
at&android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5551)
at&android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5522)
at&android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5651)
at&android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
at&android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native&Method)
at&android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:176)
at&android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:5624)
at&android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:5670)
at&android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
at&android.view.Choreographer.doCallbacks(Choreographer.java:574)
at&android.view.Choreographer.doFrame(Choreographer.java:542)
at&android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
at&android.os.Handler.handleCallback(Handler.java:733)
at&android.os.Handler.dispatchMessage(Handler.java:95)
at&android.os.Looper.loop(Looper.java:136)
at&android.app.ActivityThread.main(ActivityThread.java:5034)
at&java.lang.reflect.Method.invokeNative(Native&Method)
at&java.lang.reflect.Method.invoke(Method.java:515)
at&com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:807)
at&com.android.internal.os.ZygoteInit.main(ZygoteInit.java:623)
at&dalvik.system.NativeStart.main(Native&Method)
1408这一行是
&&&&&&&&public&void&runDrawerAnim(float&arg0){
overflow_options.setRotation(arg0);
&&&&&&&调用函数是
&&&&&&@Override
&&&&&&public&void&onDrawerSlide(View&arg0,&float&arg1)&{
&&&&&&&&mRecentRecordsFragment.runDrawerAnim(arg1&*&360);
这个bug是概率性的,大概运气好的话十分之一。
大神们帮帮忙!
相关热词搜索:
延伸阅读:
频道总排行
频道本月排行2366人阅读
1、创建两个FragmentActivity 让它继承 Fragment ,这里最低版本为11&
package com.example.
import android.app.F
import android.os.B
import android.view.LayoutI
import android.view.V
import android.view.ViewG
public class Fragment1 extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.activity_fragment1, null);
package com.example.
import android.app.F
import android.os.B
import android.view.LayoutI
import android.view.V
import android.view.ViewG
public class Fragment2 extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.activity_fragment2, null);
2、创建两个.xml 文件,用来显示屏幕切换时所用到的布局
activity_fragment1.xml
&RelativeLayout xmlns:android=&/apk/res/android&
xmlns:tools=&/tools&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:background=&@drawable/ic_launcher&
tools:context=&.MainActivity& &
&/RelativeLayout&
activity_fragment2.xml
&RelativeLayout xmlns:android=&/apk/res/android&
xmlns:tools=&/tools&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:background=&#0000ff&
tools:context=&.MainActivity& &
&/RelativeLayout&
3、在程序中调用&
package com.example.
import android.app.A
import android.app.FragmentM
import android.app.FragmentT
import android.os.B
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int windowHeight = this.getResources().getDisplayMetrics().heightP //获取当前屏幕的高
int windowWidth = this.getResources().getDisplayMetrics().widthP //获取当前屏幕的宽
Fragment1 f1 = new Fragment1();
Fragment2 f2 = new Fragment2();
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
if(windowWidth & windowHeight){
ft.replace(android.R.id.content, f1); //是横屏的时候显示f1的布局
ft.replace(android.R.id.content, f2); //显示f2 中的布局
ft.commit();
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:60066次
积分:1107
积分:1107
排名:千里之外
原创:53篇
评论:19条
(1)(1)(2)(1)(3)(4)(4)(4)(3)(7)(6)(10)(10)(4)

我要回帖

更多关于 多个fragment切换 的文章

 

随机推荐