【发布时间】:2019-01-27 20:24:02
【问题描述】:
我将隐藏片段添加到第一个片段,然后它显示第二个片段没有任何问题,但是现在当我使用滑动刷新应用程序崩溃时..请帮我解决这个问题。
使用此代码隐藏第一个片段 iam:
public void replaceFragment(Fragment someFragment, String tag) {
FragmentManager fm = getFragmentManager();
Fragment fragment = fm.findFragmentByTag(tag);
Fragment fragment2 = fm.findFragmentById(R.id.frameContainer);
if (fragment != fragment2) {
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.setCustomAnimations(R.anim.right_enter, R.anim.left_out, R.anim.left_enter, R.anim.right_out);
transaction.hide(fragment2);
transaction.add(R.id.frameContainer,someFragment);
transaction.addToBackStack(tag);
transaction.commit();
}
为了在 Activity 中滑动刷新,我正在使用此代码:
private void swipe_swipeRefresh() {
String fragment = null;
swipeRefreshLayout.setRefreshing(true);
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.frameContainer);
if (currentFragment instanceof FragmentHome) {
fragment = "FragmentHome";
}
if (currentFragment instanceof BlogFragment) {
fragment = "BlogFragment";
}
Handler handler = new Handler();
final String finalFragment = null;
handler.postDelayed(new Runnable() {
@Override
public void run() {
SettingsMain.reload(HomeActivity.this, finalFragment);
swipeRefreshLayout.setRefreshing(false);
SettingsMain.hideDilog();
}
}, 2000);
}
SettingsMain.reload(HomeActivity.this, finalFragment);这条线来自:
public static void reload(Context context, String tag) {
Fragment frg;
FragmentManager manager = ((AppCompatActivity) context).getSupportFragmentManager();
frg = manager.findFragmentByTag(tag);
final FragmentTransaction ft = manager.beginTransaction();
ft.detach(frg);
ft.attach(frg);
ft.commit();
}
【问题讨论】:
标签: android android-fragments swiperefreshlayout