【发布时间】:2020-12-28 16:11:58
【问题描述】:
在ViewPager 和TableLayout 中,我有5 个片段。我点击 Fragment-3,setUserVisibleHint = true。 Button 在 Fragment-3 上单击、替换或添加另一个片段。单击返回时,在 Fragment-3 上未收到任何事件。当用户点击返回时,我想执行一些操作。
public class ThreeFragment extends Fragment {
public ThreeFragment() {
// Required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @return A new instance of fragment BlankFragment.
*/
// TODO: Rename and change types and number of parameters
public static ThreeFragment newInstance() {
ThreeFragment fragment = new ThreeFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onResume() {
super.onResume();
Log.d("onResume", "onResume");
}
@Override
public void onPause() {
super.onPause();
Log.d("onPause", "onPause");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
Log.d("onCreateView", "onCreateView");
View view = inflater.inflate(R.layout.fragment_three, container, false);
view.findViewById(R.id.txt).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fragmentManager2 = getFragmentManager();
FragmentTransaction fragmentTransaction2 = fragmentManager2.beginTransaction();
BlankFragment fragment2 = BlankFragment.newInstance();
fragmentTransaction2.addToBackStack("abc");
fragmentTransaction2.add(android.R.id.content, fragment2);
fragmentTransaction2.commit();
}
});
return view;
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
Log.d("setUserVisibleHint", "setUserVisibleHint :: " + isVisibleToUser);
}
}
新片段:
public class BlankFragment extends Fragment {
public BlankFragment() {
// Required empty public constructor
}
// TODO: Rename and change types and number of parameters
public static BlankFragment newInstance() {
BlankFragment fragment = new BlankFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_blank, container, false);
}
}
【问题讨论】:
-
你的意思是你在 Fragment-3 上有按钮,当用户点击这个按钮时,它会把他带到 anth Fragment?那么当用户点击新 Fragment 中的返回按钮时,您希望将他带回 Fragment-3 吗?
-
处理打开新片段和返回导航。当从新片段点击返回时,Fragment-3 没有得到任何生命周期事件来识别 Fragment-3 现在可见
-
现在我明白了,请与您分享 Fragment-3 和新的 Fragment 代码,方便我为您提供帮助
-
我已经添加了代码兄弟。
标签: android android-fragments android-viewpager android-tablayout