我想通過單擊界面按鈕將變量從當(dāng)前片段返回到上一個(gè)片段。我無法從從 Fragment 類擴(kuò)展的一個(gè) Fragment 返回變量到從 Fragment 類擴(kuò)展的另一個(gè) Fragment。但我可以通過接口使用相同的傳輸方法將變量從DialogFragment返回到Fragment。在 MainActivity 中我加載 FirstFragment:getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new FirstFragment()).commit();在 FirstFragment onClick TextView tvSecondFragment 類中,我創(chuàng)建片段: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貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
創(chuàng)建您設(shè)置的目標(biāo)片段的實(shí)例時(shí)SecondFragment:
Fragment fragment = new SecondFragment();
fragment.setTargetFragment(FirstFragment.this, 0);
...
fragmentTransaction.commit();

慕尼黑8549860
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
使用視圖模型。ViewModel是一個(gè)用于存儲(chǔ)和管理UI相關(guān)數(shù)據(jù)的類。它是 Android Jetpack 的一部分。因此,通過使用 ViewModel,即使應(yīng)用程序的 UI 發(fā)生變化,您的應(yīng)用程序也會(huì)獲得一些一致的數(shù)據(jù)。
添加回答
舉報(bào)
0/150
提交
取消