2015-09-06 59 views
0

我有一個RadioGroup有兩個RadioButton的活動。 RadioButtons的行爲與標籤類似,應該創建兩個不同的片段,具體取決於哪些按鈕已被點擊。問題是片段的onCreateView方法被調用兩次,我不明白爲什麼。在RadioGroup中創建多次片段

這是我的活動:

public class MyActivity { 

private RadioGroup radioGroup; 
private FrameLayout frame; 
private RadioButton radio1; 
private RadioButton radio2; 

private RadioOneFragment radio1Fragment; 
private RadioTwoFragment radio2Fragment; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.my_activity_layout); 

    radio1 = (RadioButton) findViewById(R.id.radio1); 
    radio2 = (RadioButton) findViewById(R.id.radio2); 

    radioGroup = (RadioGroup) findViewById(R.id.radioGroup); 
    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      switch (checkedId) { 
       case R.id.radio1: 
        radio1Fragment = new RadioOneFragment(); 
        getFragmentManager().beginTransaction() 
          .replace(R.id.radio_frg_container, radio1Fragment) 
          .commit(); 
        break; 
       case R.id.radio2: 
        radio2Fragment = new RadioTwoFragment(); 
        getFragmentManager().beginTransaction() 
          .replace(R.id.radio_frg_container, radio2Fragment) 
          .commit(); 
        break; 
      } 
     } 
    }); 
    if (getIntent().getExtras() != null) { 
     radioGroup.check(R.id.radio2); 
    } else { 
     radioGroup.check(R.id.radio1); 
    } 
} 
} 

任何幫助是極大的讚賞。謝謝。

+0

此行爲是否是由於我正在檢查代碼中的單選按鈕而導致的? – user3165984

回答

0

嘗試一個片段對象

private RadioOneFragment radio1Fragment; 
private RadioTwoFragment radio2Fragment; 

private RadioTwoFragment radioFragment; 

switch (checkedId) { 
       case R.id.radio1: 
        radioFragment = new RadioOneFragment(); 
        getFragmentManager().beginTransaction() 
          .replace(R.id.radio_frg_container, radioFragment) 
          .commit(); 
        break; 
       case R.id.radio2: 
        radioFragment = new RadioTwoFragment(); 
        getFragmentManager().beginTransaction() 
          .replace(R.id.radio_frg_container, radioFragment) 
          .commit(); 
        break; 
      } 
+0

謝謝,但不幸的是,這並沒有解決問題 – user3165984