如何更改活动中的片段的textview文本
问题描述:
我在主活动中动态添加了片段(这是从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");
}
});
}
答
您应该在片段中创建一个方法来更改文本。
例如
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();
如果在'addFragment'两次,从而增加了两个片段,哪些文本应该可以通过点击'changeFragText'改变用户点击? – 2014-08-31 19:15:52