3

私はいくつかのレイアウトをロードし、スライドで何かをしているビューページャーを使用しています。アクティビティが方向を変更しているときに、ページャーがデータを再度ロードせずにレイアウトを特定の方向に変更できるようにしたい。これは可能ですか??

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);
4

0 に答える 0