0

方向ごとに1つずつ、2つのレイアウトファイルにrViewSwitcheがあります。FragmentActivityViewSwitcherによって制御されますradio group

画面を回転すると、すべてが期待どおりに動作し、正しいレイアウトファイルが画面のレンダリングに使用されます。

ただし、画面が回転すると、ラジオグループのonCheckedChangedイベントが発生します。そのリスナーは次のようになります(で作成):
onCreate

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        //snip
        radios.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int index) {

            viewSwitcher.showNext();
        }
        });
 }

画面が回転したときに起動せずにviewSwitcher.showNext()を呼び出すにはどうすればよいですか?listener

4

1 に答える 1

0

まあ、ハックな解決策を見つけましたが、もっと良い解決策があることを願っています。

    private boolean wasRotatedHack;

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    this.savedInstanceState = savedInstanceState;
    if (savedInstanceState == null) {
        wasRotatedHack = false;
    } else {
        wasRotatedHack = true;
    }

    tabRadios.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int index) {

            if (!wasRotatedHack) {
                viewSwitcher.showNext();
            } else {
                wasRotatedHack = false;
            }
        }
    });

    startInspectionButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(new Intent(getApplicationContext(), InspectionActivity.class));
        }
    });
  }
于 2012-06-21T07:20:05.523 に答える