想与您核实活动和片段生命周期。
假设我有Activity A
来电Activity B
。在Activity B
内,我有Fragment C
和Fragment D
由标签分隔。
Fragment C
将加载从Web API下载的微调器值。用户按下后退按钮到Activity A
再到Activity B
后,我不想重新加载微调器并调用Web API来填充其值。
在这种情况下,我应该在Fragment C
处将代码放在初始化微调器一次?
以下是我创建活动B的方法
public class Activity_B extends custom_activity{
final Context context = this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setAdapter(new SectionPagerAdapter(getSupportFragmentManager()));
tabLayout.setupWithViewPager(viewPager);
}
public class SectionPagerAdapter extends FragmentPagerAdapter {
public SectionPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new Fragment_C();
case 1:
default:
return new Fragment_D();
}
}
@Override
public int getCount() {
return 2;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return getResources().getString(R.string.fragment_c);
case 1:
default:
return getResources().getString(R.string.fragment_d);
}
}
}
}
答案 0 :(得分:0)
您可以使用android:launchMode =“singleInstance”
来实现此行为 <activity
android:name="com.aitrich.android.framework.ui.activity.HomeActivity"
android:label="@string/app_name"
android:launchMode="singleInstance"
android:screenOrientation="portrait" >
</activity>
在ActivityB中使用android:launchMode =“singleInstance”标志只会创建该活动的单个实例。因此,您可以在再次从ActivityA导航时保留数据。
注意:假设您没有完成ActivityB