【发布时间】:2015-11-23 15:29:09
【问题描述】:
我有几个片段和一个视图寻呼机。用户当然可以在视图寻呼机的页面之间来回切换。我的问题是,当用户更改方向时,当前页面会丢失所有数据! .但是当用户来回翻页时,再次检索数据并用正确的数据填充页面。
这是我的代码:
public class PropertyDetailActivity extends AppCompatActivity {
Toolbar toolbar;
long[] mPropertiesIDs;
private ViewPager mPager;
private PagerAdapter mPagerAdapter;
@Override
public void onSaveInstanceState(final Bundle outState) {
super.onSaveInstanceState(outState);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
long ID = getIntent().getExtras().getLong("ID");
mPropertiesIDs = getIntent().getExtras().getLongArray("propertiesIDs");
setContentView(R.layout.activity_property_detail);
setupToolbar();
mPager = (ViewPager) findViewById(R.id.pager);
mPagerAdapter = new PropertyDetailPagerAdapter(getSupportFragmentManager());
mPager.setAdapter(mPagerAdapter);
int index = PropertyArrayList.getIndexOf(mPropertiesIDs, ID);
mPager.setCurrentItem(index);
}
private void setupToolbar() {
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);// will make the icon clickable and add the < at the left of the icon.
// actionBar.setHomeButtonEnabled(true); will just make the icon clickable, with the color at the background of the icon as a feedback of the click.
// actionBar.setHomeAsUpIndicator(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_property_detail, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
//**********************************************************************************************************************
private class PropertyDetailPagerAdapter extends FragmentStatePagerAdapter {
public PropertyDetailPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
mPropertiesIDs = getIntent().getExtras().getLongArray("propertiesIDs");
PropertyDetailFragment fragment = new PropertyDetailFragment();
fragment.setPropertyID(mPropertiesIDs[position]);
return fragment;
}
@Override
public int getCount() {
return mPropertiesIDs.length;
}
(我不确定我是否能表达得足够好,因为我不会说英语那么好。所以请随时编辑或发表评论:))
提前感谢您的帮助。
【问题讨论】:
标签: android android-fragments android-viewpager fragmentstatepageradapter