在两个片段之间将文本从EditText发送到TextView

时间:2017-08-06 16:22:23

标签: java android android-fragments

我正在开发一个有两个片段的应用程序。 我需要将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);
希望你能提供帮助。

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:1)

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

代码段 - How to pass values between Fragments