从MainActivity中编辑Fragment中的EditText

时间:2015-11-04 07:33:38

标签: java android android-fragments android-intent bundle

我尝试将与片段相关联的textview替换为我从服务中获取的数据。但即使我在Activity中使用LayoutInflator来编辑这些edittextes,我也无法改变它们。我所理解的是,我需要从片段中更改它们,但我需要将数据从活动发送到片段,这是我无法再实现的。

这是我在 MainActivity onCreate 中编写的代码行

        LayoutInflater layoutInflater = (LayoutInflater) getApplicationContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View mView = layoutInflater.inflate(R.layout.tab_designreservation, null);

        Bundle extrasofuser = getIntent().getExtras();
        nameofuser = extrasofuser.getString("nameofuser").toString();
        surnameofuser = extrasofuser.getString("surnameofuser").toString();

        EditText enum_of_name = (EditText) mView.findViewById(R.id.et_name);
        EditText enum_of_surname = (EditText) mView.findViewById(R.id.et_surname);

        enum_of_name.setText(nameofuser);
        enum_of_surname.setText(surnameofuser);

据我所知,我需要将这些字符串变量发送到片段,但我无法做到。谢谢你的帮助!!

1 个答案:

答案 0 :(得分:1)

如果我很清楚您的问题,您需要在Activity中设置Fragment中的editText文本。 一种方法是在活动中保留片段的引用。

     private MyFragment mFragment;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
        ...
        mFragment = new MyFragment();
        ...
     }

然后在片段类中创建一个方法来更改EditText文本:

     public void changeEditTextContent(Bundle extras){
          String nameofuser = extrasofuser.getString("nameofuser").toString();
          String surnameofuser = extrasofuser.getString("surnameofuser").toString();

           EditText enum_of_name = (EditText) rootView.findViewById(R.id.et_name);
           EditText enum_of_surname = (EditText) rootView.findViewById(R.id.et_surname);

           enum_of_name.setText(nameofuser);
           enum_of_surname.setText(surnameofuser);
     }

最后,根据您的活动,您可以调用此方法:

     Bundle extrasofuser = getIntent().getExtras();
     mFragment.changeEditTextContent(extrasofuser);