Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编辑MainActivity中片段中的EditText_Java_Android_Android Fragments_Android Intent_Bundle - Fatal编程技术网

Java 编辑MainActivity中片段中的EditText

Java 编辑MainActivity中片段中的EditText,java,android,android-fragments,android-intent,bundle,Java,Android,Android Fragments,Android Intent,Bundle,我试图用我从服务中获得的数据替换连接到片段的文本视图。但即使我在活动中使用LayoutInflator编辑这些编辑文本,我也无法更改它们。我所理解的是,我需要从片段中更改它们,但我需要将数据从一个活动发送到另一个片段,这是我无法再次实现的 以下是我在MainActivity的onCreate中编写的代码行 LayoutInflater layoutInflater = (LayoutInflater) getApplicationContext()

我试图用我从服务中获得的数据替换连接到片段的文本视图。但即使我在活动中使用LayoutInflator编辑这些编辑文本,我也无法更改它们。我所理解的是,我需要从片段中更改它们,但我需要将数据从一个活动发送到另一个片段,这是我无法再次实现的

以下是我在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);

据我所知,我需要将这些字符串变量发送到fragment,但我不能这样做。谢谢你的帮助

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

     private MyFragment mFragment;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
        ...
        mFragment = new MyFragment();
        ...
     }
然后在fragment类中创建一个方法来更改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);

是的,您理解正确,但我仍然得到一个错误,即--“尝试在空对象引用上调用虚拟方法'void android.widget.EditText.setText(java.lang.CharSequence)'”--这是因为它在布局中找不到EditText。这些编辑文本是在活动中还是在片段中?如果您可以发布您的活动和片段代码,那就太好了。我的片段现在处于默认模式。我还没有在那里写任何东西。我试图从活动中更改它们,我在问题上添加的代码行已经来自MainActivity。我知道我需要从片段更改EditTextes,但问题是我无法将任何数据从活动发送到片段。您必须对片段进行编码。就像我写的那样,它应该可以工作,或者如果您在显示片段之前已经有了所需的数据,您可以使用一个Bundle将其作为额外数据发送,但是您必须对片段进行编码才能接收它