2015-11-04 81 views
-1

我试图用从服务中获得的数据替换连接到片段的textviews。但即使我在Activity中使用LayoutInflator来编辑这些edittextes,我也无法更改它们。我所理解的是,我需要从片段中改变它们,但我需要将活动的数据发送到片段,这是我无法再实现的。在MainActivity的Fragment中编辑EditText

下面是我里面的onCreate写道MainActivity

 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

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

 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); 
+0

是的,你明白正确,但我仍然得到错误,说----“尝试调用虚拟方法'无效android.widget.EditText.setText(java.lang.CharSequence)'空对象引用”----- –

+0

这是因为我t在布局中找不到EditTexts。那些editText是在Activity中还是在fragment中?如果您可以发布您的活动和片段代码 –

+0

,那么该片段现在处于默认模式。我还没有写过任何东西。我试图从活动中更改它们,并且我在问题上添加的代码行已经来自MainActivity。我知道我需要从Fragment中更改EditTextes,但问题是我无法将活动中的任何数据发送到片段。 –