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