私はいくつかのレイアウトをロードし、スライドで何かをしているビューページャーを使用しています。アクティビティが方向を変更しているときに、ページャーがデータを再度ロードせずにレイアウトを特定の方向に変更できるようにしたい。これは可能ですか??
onCreate メソッドを何度も呼び出さないようにするには、マニフェストで次の行を指定してから onConfigurationChanged を使用する必要があることを私は知っています。
Android:configChanges="向き"
ただし、これを行うと、レイアウトは向きに応じて正しいレイアウトをロードしません (したがって、ランドスケープ ロードの場合はランドスケープ レイアウトをロードします)。代わりに、ロードされたレイアウトを保持してサイズを変更します。
class ViewPagerAdapter extends PagerAdapter {
public int getCount() {
return 4;
}
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int resId = 0;
switch (position) {
case Constants.LAYOUT_FEEDBACK:
resId = R.layout.activity_feedback;
view = inflater.inflate(resId, null);
((ViewPager)collection).addView(view, 0);
btnSend = (Button)view.findViewById(R.id.btnSend);
etFeedback = (EditText)view.findViewById(R.id.etFeedback);
etEmail = (EditText)view.findViewById(R.id.etMail);
sendFeedback(btnSend);
break;
case Constants.LAYOUT_HOME:
resId = R.layout.activity_home;
view = inflater.inflate(resId, null);
((ViewPager)collection).addView(view, 0);
btnCamera = (ImageButton)view.findViewById(R.id.btnCamera);
btnPoo = (ImageButton)view.findViewById(R.id.btnPoo);
imgPopular = (Button)view.findViewById(R.id.btnPopular);
imgRecent = (Button)view.findViewById(R.id.btnRecent);
imgNearby = (Button)view.findViewById(R.id.btnNearby);
btnEdit = (ImageButton)view.findViewById(R.id.btnEdit);
btnFeedback = (ImageButton)view.findViewById(R.id.btnFeedback);
incSearch = getLayoutInflater().inflate(R.layout.include_search, null);
incNoInternet = view.findViewById(R.id.include_no_internet);
incNoInternet.setVisibility(View.INVISIBLE);
btnCancel = (Button)incSearch.findViewById(R.id.btnCancel);
imgX = (ImageView)incSearch.findViewById(R.id.imgX);
etKeywords = (EditText)incSearch.findViewById(R.id.etText);
btnRetry = (Button)incNoInternet.findViewById(R.id.btnTryAgain);
pooAdapter = new PooAdapter(poos);
lvPoo = (ListView)view.findViewById(R.id.lvPoo);
lvPoo.addHeaderView(incSearch);
lvPoo.setCacheColorHint(Color.TRANSPARENT);
lvPoo.setAdapter(pooAdapter);