【问题标题】:Why does FragmentTransaction work sporadically?为什么 FragmentTransaction 偶尔工作?
【发布时间】:2013-07-19 07:52:09
【问题描述】:

我的 xml 中有几个片段(其中 4 个)。我第一次使用此代码运行活动:

private void loadSenderFragment(int sender_fragment) {
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

    // TODO: Animation for later
    if (loadRunOnce) {
        //ft.setCustomAnimations(R.anim.fade_in, R.anim.fade_out, R.anim.fade_in, R.anim.fade_out);
    }

    switch (sender_fragment) {
    case FILES_TO_SEND_FRAGMENT:
        Log.i(StaticValues.TAG, "files to send fragment visisble");
        ft.hide(fragmentSendDev);
        ft.show(fragmentFilesSend);
        break;
    case SEND_TO_FRAGMENT:
        Log.i(StaticValues.TAG, "hiding filesSend, loading senddev");
        ft.hide(fragmentFilesSend);
        ft.show(fragmentSendDev);
        break;
    }
    if (loadRunOnce)
        ft.addToBackStack(null);
    else {
        ft.hide(fragmentReceiveWait);
        ft.hide(fragmentReceiving);
        loadRunOnce = true;
    }
    ft.commit();
}

它显示了正确的视图 (Files_to_send_fragment),然后通过回调从该片段中我再次调用 loadSenderFragment,但这次是 SEND_TO_FRAGMENT 的情况。 我知道这会被调用,因为我的日志:隐藏 fileSend,加载 senddev 显示在我的 logcat 上,并且 ft.addToBackStack 也可以正常工作,因为按下后退按钮不会取消其中的活动。但是来自 fragmentFilesSend 的布局继续显示,而另一个则没有(当前为白色背景的页面)。 根据我对代码的理解和我的意图,隐藏文件发送并显示发送设备。 有谁知道为什么隐藏/显示可能不起作用。

顺便说一句,我正在使用兼容性库。 (也尝试了常规的 api Honeycomb+ 库,但仍然没有)。

【问题讨论】:

    标签: android android-fragments visibility fragmenttransaction


    【解决方案1】:

    在调用 hide() 和 show() 函数之前,您必须将这些片段添加到它们要显示的视图中。只需事先初始化它们。

    【讨论】:

    • 它们已经被添加(否则会出现空指针问题)。我通过 xml 添加它们并通过 id 找到它们。
    • 我也尝试在运行时添加(不是来自 xml),但仍然没有显示正确。
    【解决方案2】:

    我已经弄清楚为什么会发生这种情况。出于某种原因,如果您使用没有窗口背景的样式,即使您隐藏/显示不同的片段,它们也会被绘制(出于某种原因,我不知道为什么)。所以我的风格里面我加了一个

    <item name="windowBackground">@null</item>
    

    为了减少绘制多少像素,是阻碍我的事情。谁知道呢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-08
      • 1970-01-01
      • 1970-01-01
      • 2014-01-08
      • 2020-11-10
      • 1970-01-01
      • 2016-01-21
      相关资源
      最近更新 更多