反射修改原先逻辑
2023-04-21 本文已影响0人
Crassus
Field file = WirelessUSGFragment.class.getDeclaredField("mBtnPreset"); // 通过反射获取mMessageView对象,这是类中的成员变量名
file.setAccessible(true); //私有变量需要使用此方法
backBtn = (ImageButton) file.get(this); // 获取textView实例,mBootMsgDialog为具体实例
backBtn.setOnClickListener(mClickListener);
backBtn.setBackgroundResource(R.mipmap.sound_back);
fragmentManagment 添加监听动作,执行了
private FragmentManager.OnBackStackChangedListener backStackListener = new FragmentManager.OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
String name = "";
int position = getSupportFragmentManager().getBackStackEntryCount();
if(position!=0){
FragmentManager.BackStackEntry backEntry=getSupportFragmentManager().getBackStackEntryAt(position-1);
name=backEntry.getName();
}
// if(name=="addFragment" && currentFragment == wirelessUSGFragment){
// new Handler().postDelayed(() -> {
// updateSettingBtn();
// },800);
//
// }
}
};
private void showFragment(Fragment fragment) {
FragmentManager fm = getSupportFragmentManager();
// fm.addOnBackStackChangedListener(backStackListener);
if (currentFragment != fragment) {
// 判断传入的fragment是不是当前的currentFragment
FragmentTransaction transaction = fm.beginTransaction();
if (currentFragment != null) {
// 不是则隐藏
transaction.hide(currentFragment);
}
// 然后将传入的fragment赋值给currentFragment
currentFragment = fragment;
// 判断传入的fragment是否已经被add()过
if (!fragment.isAdded()) {
transaction.add(R.id.fragment_stub, fragment).show(fragment).addToBackStack("addFragment").commit();
// 立即执行完之后
fm.executePendingTransactions();
} else {
transaction.show(fragment).commit();
}
}
}