如何显示片段中没有空指针的片段中的DialogFragment没有附加到活动?

时间:2018-10-25 07:57:20

标签: android android-fragments nullpointerexception dialog android-dialogfragment

我在Fragment内显示DialogFragment时遇到问题。不管尝试什么都无所谓,我无法每次都能正常工作。

我的布局包括带有导航抽屉的活动以及正在显示片段的内部活动。在这些片段上,我必须显示DialogFragment,但是为此,我必须获取上下文/应用程序上下文/活动/任何内容(取决于当前年份和天气)来显示它。

在大多数情况下,它可以正常工作,但是有时,即使不断向用户显示片段(没有任何配置更改或任何更改),有时也会发生片段未附加的情况。我也在生产中遇到了这个错误,所以不仅仅是我的设备。

为此,好的做法是使用方法iFyreent()进行检查,如果未附加活动,则什么也不做。我不确定这是一种好的做法,因为如果用户松开他们的工作,他们将不满意,因为“保存对话框”将不会显示,仅仅是因为Google给出了糟糕的做法!

到目前为止,我的片段中有(百万种组合):

private void showStoreDialog() {
    if (someConditionIsOk) {
        StringBuilder sb = new StringBuilder();
        sb.append(getString(R.string.someText));
        sb.append(MINIMUM_LENGTH);
        sb.append(getString(R.string.someText2));

        Toast.makeText(getActivity(), sb.toString(), Toast.LENGTH_LONG).show();
        return;
    }
    ...

此行发生异常:sb.append(getString(R.string.someText));

Cause: android.support.v4.app.Fragment.requireContext (Fragment.java:614)   
android.support.v4.app.Fragment.getResources (Fragment.java:678)
android.support.v4.app.Fragment.getString (Fragment.java:700)
solutions.lunalabs.gpsracer.fragments.RecordingFragment.showStoreDialoglog (RecordingFragment.java:152)

我知道我可以通过在带有回调的活动中进行路由来解决此问题,但我不希望这样做,因为即使仅在一个片段中需要活动,我也应该在活动中路由所有对话框。有安全的解决方案吗?

谢谢!

0 个答案:

没有答案