2014-08-31 111 views
1

我在主活動中動態添加了片段(這是從secfrag.xml中填充的)。我的主要活動中有兩個按鈕。一個用於添加片段,另一個用於更改片段的文本。我已經成功地爲我的活動添加了片段,但是我無法更改片段的textview文本。我怎樣才能做到這一點。如何更改活動中的片段的textview文本

public class MyActivity extends ActionBarActivity { 
    Button addFragment; 
    Button changeFragText; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my); 
    addFragment = (Button) findViewById(R.id.mybtn); 
    changeFragText = (Button) findViewById(R.id.mybtn2); 



    addFragment.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View view) { 
       Secfragjava secfragjava = new Secfragjava(); 
       getFragmentManager().beginTransaction().add(R.id.mainholder, secfragjava).commit(); 

      } 


     }); 

    changeFragText.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View view) { 
      //how can i have the fragment and change its textview 
      TextView frv=(TextView) getFragmentManager().findFragmentById(R.id.container).getView().findViewById(R.id.mysecText); 
      frv.setText("raton"); 
     } 
    }); 

} 
+0

如果在'addFragment'兩次,從而增加了兩個片段,哪些文本應該可以通過點擊'changeFragText'改變用戶點擊? – 2014-08-31 19:15:52

回答

4

您應該在片段中創建一個方法來更改文本。

例如

public void changeText(){ 
    //this textview should be bound in the fragment onCreate as a member variable 
    TextView frv=(TextView) getView().findViewById(R.id.mysecText); 
    frv.setText("raton"); 
} 

然後在你的onClickListener你可以直接調用該方法:

((Secfragjava)getFragmentManager().findFragmentById(R.id.container)).changeText();