我想通过单击界面按钮将变量从当前片段返回到上一个片段。我无法从从 Fragment 类扩展的一个 Fragment 返回变量到从 Fragment 类扩展的另一个 Fragment。但我可以通过接口使用相同的传输方法将变量从DialogFragment返回到Fragment。在 MainActivity 中我加载 FirstFragment:getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new FirstFragment()).commit();在 FirstFragment onClick TextView tvSecondFragment 类中,我创建片段:class FirstFragment extends Fragment implements SecondFragment.SecondFragmentListener {public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = inflater.inflate(R.layout.first_fragment, container, false); tvSecondFragment.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Fragment fragment = new SecondFragment(); FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); fragmentTransaction.add(R.id.fragment_container, fragment); fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); } });return view;} @Override public void sentAge(String input) { Log.d(TAG, "method sentAge called with variable: " + input); }}这是 SecondFragment 类,我尝试在其中返回变量 onClick 按钮:public class SecondFragment extends Fragment { private SecondFragmentListener listener; public interface SecondFragmentListener { public void sentAge(String input); } private EditText editText; private Button button; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.second_fragment, container, false); editText = view.findViewById(R.id.et_age); button = view.findViewById(R.id.btn_transfer_age);
2 回答
慕仙森
TA贡献1827条经验 获得超7个赞
创建您设置的目标片段的实例时SecondFragment:
Fragment fragment = new SecondFragment();
fragment.setTargetFragment(FirstFragment.this, 0);
...
fragmentTransaction.commit();
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
使用视图模型。ViewModel是一个用于存储和管理UI相关数据的类。它是 Android Jetpack 的一部分。因此,通过使用 ViewModel,即使应用程序的 UI 发生变化,您的应用程序也会获得一些一致的数据。
添加回答
举报
0/150
提交
取消