2017-08-06 62 views
-2

我正在开发一个具有两个片段的应用程序。 我需要从一个片段的EditText中将文本转换为另一个片段中的TextView。从EditText发送文本到两个片段之间的TextView

我已经尝试过一些选项,但该应用程序仍然崩溃。

第一个片段是Tab1Setup。

第二个片段是Tab2Auto。

我想:

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     //TODO slide to position 
     View rootView = inflater.inflate(R.layout.tab1setup, container, false); 


     slide = (TextView) rootView.findViewById(R.id.slide); 
     textview = (TextView) rootView.findViewById(R.id.textView); 

     MatchNumber = (EditText) rootView.findViewById(R.id.MatchNumber); 
     ScouterName = (EditText) rootView.findViewById(R.id.ScouterName); 
     TeamNumber1 = (EditText) rootView.findViewById(R.id.TeamNumber); 
     TeamNumber2 = (EditText) rootView.findViewById(R.id.TeamNumber2); 
     TeamNumber3 = (EditText) rootView.findViewById(R.id.TeamNumber3); 

     Tab2Auto t2a = new Tab2Auto; 

     t2a.textview.setText(TeamNumber1.getText.toString); 

希望能帮到你。

+1

总是发布错误 –

+0

'Tab2Auto t2a = new Tab2Auto;'< - 这是无效的java。另外,你不想创建一个新的'Tab2Auto'片段,而是写入一个现有的片段。请参阅android文档中的[与其他片段进行通信](https://developer.android.com/training/basics/fragments/communicating.html)。 – PPartisan

+1

使用Eventbus库在两个片段之间传递数据 –

回答

2

访问另一个片段不是一个好的做法。尝试在您的Tab1Setup中添加一个界面并在您的父项活动中实施它。然后将监听器添加到您的EditText并调用接口的方法。然后在您的父级活动中,将Tab1Setup片段的值传递给Tab2Auto。有关片段和活动之间进行通信的更多信息,请参阅here

例如:

在活动

public class YourParentActivity extends AppCompatActivity 
    implements Tab1Setup.OnInteractionListener { 
      // activity code 
      ... 
      // when adding second fragment 
      mSecondFragment = Tab2Auto.newInstance(); 
      getFragmentManager() 
       .beginTransaction() 
       .add(R.id.container_id, mSecondFragment) 
       .commit(); 
      ... 


      // this is first fragment interface method 
      @Override 
      public void onEditTextValueChanged(String value) { 
       mSecondFragment.updateValue(value); 
      } 
} 

并在片段:

public class Tab1Setup extends Fragment { 
    private OnInteractionListener mListener; 
    // fragment code 

    ... 
    // inside your listener for edit text value 
    mListener.onEditTextValueChanged(value); 
    ... 



    public interface OnInteractionListener { 
      void onEditTextValueChanged(String newValue); 
    } 
} 

public class Tab2Auto extends Fragment { 
    // fragment code 
    public void updateValue(String value) { 
     mTextView.setText(value); 
    } 
} 
+0

您可以告诉我一个代码示例吗? –

+0

检查我的更新答案。 –

1

通过意图从片段将数据发送到活动,在活动接收数据。 再次开始意图将数据从一个活动发送到另一个活动。 然后将这些数据从活动发送到片段。 获取片段的oncreateview中的数据。

代码snippet-How to pass values between Fragments

+0

您应该在答案中解释链接文档中最重要的内容。在这种特殊情况下,您还应该在这里添加代码片段。 – Markus

+0

当然,这是我的第一个答案,希望你会考虑:) – soham97

+0

我只是想帮助你改进你的答案。 :)只需编辑它,它会变得更好。 :) – Markus

相关问题