2014-08-31 120 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();