如何从活动中更改片段的textview文本

时间:2014-08-31 18:01:34

标签: java android android-activity fragment

我在主要活动中动态添加了片段(从secfrag.xml中膨胀)。我的主要活动中有两个按钮。一个用于添加片段,另一个用于更改片段的文本。我已成功将片段添加到我的活动中,但我无法更改片段的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");
        }
    });

}

1 个答案:

答案 0 :(得分:4)

您应该在片段内部创建一个方法来更改文本。

e.g。

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();