同一个Activity中不同Fragment之间传值:
-
方式1:调用
getFragmentManager().findFragmentById()
获取Fragment对象,然后调用其方法。 -
方式2:调用
getFragmentManager().findFragmentById().getView().findViewById()
根据id获取activity中的fragment对象,再获取fragment的视图,根据id获取视图中的控件对象。 -
方式3:
getActivity().findViewById()
直接获取当前Activity,并根据id获取view控件对象。 -
项目代码目录
-
LeftFragment.java
public class LeftFragment extends Fragment {
private EditText mEditText;
private Button mButton;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_left, null);
mEditText = view.findViewById(R.id.et_content);
mButton = view.findViewById(R.id.btn_pass);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String str = mEditText.getText().toString().trim();
// 方式1:可以调用findFragmentById()方法根据id获取fragment对象,调用fragment中的方法赋值
/* RightFragment right = (RightFragment) getFragmentManager().findFragmentById(R.id.rightFragment);
right.setTextView(str);*/
// 方式2:先调用getFragmentManager()获取fragmentManager对象,然后调用findFragmentById()方法获取右侧的fragment
// 然后再调用getView()获取右侧fragment的view对象,最后调用view的findViewById()获得赋值的控件
/*TextView tv = getFragmentManager().findFragme