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