Android fragments 当我反向按压碎片时,屏幕重叠
我不太会使用Fragment。如上图所示,在某些情况下按下后退按钮时,屏幕重叠存在问题。有时使用replace而不是addToBackstack,并尝试通过将onBackPressed函数置于活动中进行控制,但失败。我想知道代码有什么问题。有几天我遇到了这个问题:( 主要活动Android fragments 当我反向按压碎片时,屏幕重叠,android-fragments,onbackpressed,android-bottomnavigationview,Android Fragments,Onbackpressed,Android Bottomnavigationview,我不太会使用Fragment。如上图所示,在某些情况下按下后退按钮时,屏幕重叠存在问题。有时使用replace而不是addToBackstack,并尝试通过将onBackPressed函数置于活动中进行控制,但失败。我想知道代码有什么问题。有几天我遇到了这个问题:( 主要活动 public class MainActivity extends FragmentActivity implements BottomNavigationView.OnNavigationItemSelectedList
public class MainActivity extends FragmentActivity implements BottomNavigationView.OnNavigationItemSelectedListener {
final String TAG = "MainActivity";
BottomNavigationView bottomNavigationView;
public Fragment fragmentA,fragmentB;
public Fragment fragmentB_1;
public static final int B_1_FRAGMENT = 1003;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(TAG, "onCreate");
if (findViewById(R.id.fragment_container) != null) {
if (savedInstanceState != null) {
return;
}
fragmentInit();
}
bottomNavigationInit();
}
private void fragmentInit() {
fragmentA = new FragmentA();
fragmentB = new FragmentB();
fragmentB_1 = new FragmentB_1();
fragmentA.setArguments(getIntent().getExtras());
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, fragmentA, "a").commit();
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_a) {
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragmentA, "a")
.commit();
} else if (id == R.id.action_b) {
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragmentB, "b")
.commit();
} else {
Log.i(TAG, "onNavigationItemSelected else");
}
return true;
}
private void bottomNavigationInit() {
bottomNavigationView = findViewById(R.id.bottomNavigationView);
bottomNavigationView.setOnNavigationItemSelectedListener(this);
}
public void changeFragment(int index) {
switch (index) {
case B_1_FRAGMENT:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragmentB_1)
.addToBackStack("b_1").commit();
break;
/*
* ...
*
* */
}
}}
片段A
...Nothing Special
...Nothing Special
片段B
public class FragmentB_1 extends Fragment implements View.OnClickListener{
MainActivity activity;
View view;
CardView cvFramgentB1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_calculator, container, false);
btnInit();
return view;
}
private void btnInit() {
cvFramgentB1 = view.findViewById(R.id.cv_fragmentB_1);
}
@Override
public void onStart() {
super.onStart();
cvFramgentB1.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int id = v.getId();
if (id == R.id.cv_proficiency) {
activity.changeFragment(B_1_FRAGMENT);
}
}
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
activity = (MainActivity) getActivity();
}
@Override
public void onDetach() {
super.onDetach();
activity = null;
}}
片段B_1