我制作了一个应用程序,用3种不同的活动来改变壁纸
方案
当我在1°活动中向下滚动时,例如,直到结束并点击一个类别我将进入2°活动但是当我回去时,我希望是1°活动的结束而不是我发现我自己一开始。 (也是2°活动到3°和背部)
那么如何保存以前的状态呢?我使用RecyclerView来制作列表。 (我是Android工作室的新手,抱歉英语不好不是我的第一语言)
如果我不够清楚有我的应用程序:
https://play.google.com/store/apps/details?id=yangxun.animewallpaper
这些是壁纸列表的代码,2°活动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_wallpaper);
Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
toolbar.setTitle(Common.CATEGORY_SELECTED);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
recyclerView = (RecyclerView)findViewById(R.id.recycler_list_wallpaper);
recyclerView.setHasFixedSize(true);
GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 2);
recyclerView.setLayoutManager(gridLayoutManager);
loadBackgroundList();
}
private void loadBackgroundList(){ //....
}
@Override
protected void onStart(){
super.onStart();
if(adapter!=null)
adapter.startListening();
}
@Override
protected void onResume(){
super.onResume();
if(adapter!=null)
adapter.startListening();
}
@Override
protected void onStop(){
if(adapter!=null)
adapter.stopListening();
super.onStop();
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
if(item.getItemId()== android.R.id.home)
finish(); //Close activity when click Back button
return super.onOptionsItemSelected(item);
}
有我的适配器
public MyFragmentAdapter(FragmentManager fm, Context context){
super(fm);
this.context = context;
}
@Override
public Fragment getItem(int position){
if(position==0)
return CategoryFragment.getInstance();
else
return null;
}
@Override
public int getCount(){
return 1;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "Category";
}
return "";
}
答案 0 :(得分:1)
我猜您在onResume
中的活动中刷新了列表,因此您最终会得到一个新的项目列表,它会滚动到顶部。这是正常的。
如果您不刷新onResume
中的列表,那么您应该没问题。另一种方法:保存点击项目的索引,然后在返回列表后刷新呼叫:recyclerview.scrollToPosition(oldPosition)
答案 1 :(得分:0)
我只是改变了
protected void onStop(){
if(adapter!=null)
adapter.stopListening();
super.onStop();
}
到
protected void onStop(){
super.onStop();
}
一切正常!谢谢你的提示