为了账号安全,请及时绑定邮箱和手机立即绑定

从片段到片段返回变量

从片段到片段返回变量

蝴蝶不菲 2023-07-28 10:06:00
我想通过单击界面按钮将变量从当前片段返回到上一个片段。我无法从从 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();


查看完整回答
反对 回复 2023-07-28
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

使用视图模型。ViewModel是一个用于存储和管理UI相关数据的类。它是 Android Jetpack 的一部分。因此,通过使用 ViewModel,即使应用程序的 UI 发生变化,您的应用程序也会获得一些一致的数据。

查看完整回答
反对 回复 2023-07-28
  • 2 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信