2012-06-21 58 views
0

我有一個ViewSwitche r在FragmentActivity與2佈局文件,每個方向一個。 ViewSwitcherradio group控制。android ViewSwitcher屏幕方向變化

當我旋轉屏幕時,所有行爲都如我所料,正確的佈局文件用於渲染屏幕。

但是,當屏幕旋轉時,無線電組的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而不必當屏幕旋轉時它火?

回答

0

好吧,我sorta發現了一個hacky的解決方案,但我希望有一個更好的那裏。

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)); 
     } 
    }); 
    } 
+0

剛剛測試了這一點,當您關閉屏幕並重新打開時,它會變得混亂。必須有一個更清潔的方式... – Ben