アプリ作って海外移住

コピペプログラマーのメモ

スクロール位置の復元  Fragment 画面遷移で戻った時、スクロール位置を復元したい。

 

これは必要なし!

 

 

 クリックでFragment 画面遷移の場合

Click => onDestroyView() => 呼ばれるFragment実行

戻った時、onCreateView onResume が呼ばれる。

onCreateが呼ばれない。ここがミソ。

スクロール位置復元はSaveInstanceState を使わなくても。

クリック時にスクロール位置を取得しておけばよい。

mScrollY = mScrollView.getScrollY();

 

で、Resumeで scrollTo してあげる。

mScrollView =(ScrollView)getActivity().findViewById(R.id.scrollView);
mScrollView.post(new Runnable(){
public void run()
{ //mScrollView.fullScroll(ScrollView.FOCUS_DOWN);
// mScrollView.scrollTo(0,mScrollY);
}
});

 

onCreateが呼ばれないので、mScrollYは保持してる。

mScrollView.post(new Runnable(){ してあげないと scrollTo しない。

理由は不明。

 

**************Intentの場合*******************

Androidは機種メーカーによって、ライフサイクルが違う場合がある。

画面遷移から戻った時、Listview RecyclerView ScrollView など、元の状態に戻らない機種がある。

Intent  して戻った時、onCreate を実行しない機種はOK

onCreate を実行する機種は上記のような処理が必要。SaveInstanceStateが必要。

 

画面内容、スクロール位置の復元は自分でやれという事だ。