0

私はこのチュートリアルに従っています。私のアプリには 3 つのタブがあります。tab3 では、いくつかのビュー (ボタンや EditText スピナーなど) に変更を加えています。これらの変更に代わって、tab2 でいくつかのアクションを実行する必要があります。簡単に言うと、タブ 3 でいくつかの値を変更すると、タブ 2 で効果が発生します。私はこれを行う方法を知っています。tab2とを切り替えるときに、ビューの値が毎回デフォルト値にリセットされるようにしたいだけですtab3

  • 私の質問は、ビューの状態をどのように保存できるかということです。タブを再開するときに、以前に残したビューのデフォルトの外観を取得する必要があります。

もう1つ、 onCreateView() メソッドですべての作業を行っていることをお伝えします。これが正しい方法です。このような。

 public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {

Toast.makeText(getActivity(), "onCreateView", Toast.LENGTH_SHORT)
        .show();

if (container == null) {

    return null;
}

View vi = inflater.inflate(R.layout.settings, container, false);

btnInsert = (Button) vi.findViewById(R.id.btnInsert);
btnInsert.setOnClickListener(this);
btnPosition = (Button) vi.findViewById(R.id.btnPosition);
btnPosition.setOnClickListener(this);
txtPosition = (TextView) vi.findViewById(R.id.txtPosition);
txtLogo = (TextView) vi.findViewById(R.id.txtLogo);
imgLogoPreview = (ImageView) vi.findViewById(R.id.imgLogoPreview);
imgLogoPreview.setOnClickListener(this);
edTxtUserText = (EditText) vi.findViewById(R.id.edTxtPreview);
relLogo = (RelativeLayout) vi.findViewById(R.id.RelLogo);
relText = (RelativeLayout) vi.findViewById(R.id.RelText);

logoWheel = (WheelView) vi.findViewById(R.id.wheelLogo);

logoWheel.setAdapter(new ArrayWheelAdapter<String>(logoWheelList));
logoWheel.setVisibleItems(4);
logoWheel.setCurrentItem(1);
positionWheel = (WheelView) vi.findViewById(R.id.wheelPosition);
positionWheel.setAdapter(new ArrayWheelAdapter<String>(
        positionWheelTextList));

// LogoWheel changed listener
changedListenerLogo = new OnWheelChangedListener() {
    public void onChanged(WheelView wheel, int oldValue, int newValue) {
        if (!wheelScrolled) {

        }
    }
};

logoWheel.addChangingListener(changedListenerLogo);

// Wheel scrolled listener
scrolledListenerLogo = new OnWheelScrollListener() {

    public void onScrollStarts(WheelView wheel) {
        wheelScrolled = true;

    }

    public void onScrollEnds(WheelView wheel) {
        wheelScrolled = false;
        btnInsert.setText(logoWheelList[wheel.getCurrentItem()] + "");
        wheel.setVisibility(View.INVISIBLE);
        if (wheel.getCurrentItem() == 2) {

            txtPosition.setVisibility(View.INVISIBLE);
            btnPosition.setVisibility(View.INVISIBLE);
            relText.setVisibility(View.INVISIBLE);
            relLogo.setVisibility(View.INVISIBLE);

        } else if (wheel.getCurrentItem() == 1) {

            relText.setVisibility(View.VISIBLE);
            relLogo.setVisibility(View.INVISIBLE);
            txtPosition.setVisibility(View.VISIBLE);
            btnPosition.setVisibility(View.VISIBLE);
            btnPosition.setText("Top");
            positionWheel.setAdapter(new ArrayWheelAdapter<String>(
                    positionWheelTextList));
            positionWheel.setVisibleItems(4);
            positionWheel.setCurrentItem(1);

        } else if (wheel.getCurrentItem() == 0) {

            relLogo.setVisibility(View.VISIBLE);
            relText.setVisibility(View.INVISIBLE);
            txtPosition.setVisibility(View.VISIBLE);
            btnPosition.setVisibility(View.VISIBLE);
            btnPosition.setText("Top Left");
            positionWheel.setAdapter(new ArrayWheelAdapter<String>(
                    positionWheelLogoList));
            positionWheel.setVisibleItems(4);
            positionWheel.setCurrentItem(1);

        }
    }
};

logoWheel.addScrollingListener(scrolledListenerLogo);

// /////////////////////Positon Wheel Listners///////////

// LogoWheel changed listener
changedListenerPosition = new OnWheelChangedListener() {
    public void onChanged(WheelView wheel, int oldValue, int newValue) {
        if (!wheelScrolled) {

        }
    }
};

positionWheel.addChangingListener(changedListenerPosition);

// Wheel scrolled listener
scrolledListenerPosition = new OnWheelScrollListener() {

    public void onScrollStarts(WheelView wheel) {
        wheelScrolled = true;

    }

    public void onScrollEnds(WheelView wheel) {
        wheelScrolled = false;

        String btnStatus = btnInsert.getText().toString();
        if (btnStatus.equals("Logo")) {
            btnPosition.setText(positionWheelLogoList[positionWheel
                    .getCurrentItem()] + "");

        } else if (btnStatus.equals("Text")) {
            btnPosition.setText(positionWheelTextList[positionWheel
                    .getCurrentItem()] + "");
        }

        wheel.setVisibility(View.INVISIBLE);

    }
};

positionWheel.addScrollingListener(scrolledListenerPosition);

return vi;

}

  • どの時点で状態を保存する必要があり、どの時点で保存された状態を取得する必要がありますか?

  • フラグメントのライフサイクルを簡単な言葉で実装する方法を教えてください。

私もsaveInstance()フラグメントの方法を試しました。しかし、呼び出されません。

ありがとう

4

1 に答える 1

1

私があなたを正しく理解していれば、これは役に立つかもしれません。毎回フラグメントを再作成する代わりに、フラグメントを非表示にして表示できます。

もちろん、これはフラグメントを保持するため、いくつかのタブがあった場合に行うことだけです。これの利点は、

  1. データの保存とフラグメントの再作成について心配する必要はありません
  2. 関連するタブが選択されるとすぐに、ユーザーは変更をすぐに利用できます。
于 2013-02-23T08:39:38.623 に答える