在我的一个应用程序中,我有一种情况,用户输入页面并显示进度条,直到服务器返回响应。如果服务器返回错误或用户没有互联网(或任何其他问题),则图像视图将显示下面的错误消息。下面是我的问题:将带有imageview和error msg的布局放置在常规布局xml中的布局是否更好,该布局是可见性=已消失的活动,然后在发生错误时使其可见,还是更好地制作单独的layout.xml只是为了错误,并做一个setcontentview,如果错误发生?如果我将setcontentview用于另一个布局,那么当新布局膨胀时,用户将看到白色闪光,而我不太喜欢这一点。另一方面,将错误布局保留在常规布局内可能会损失内存通常不会被普通用户看到的东西。当然,还有第三种选择 - 以编程方式添加错误屏幕 - 但是如果错误屏幕的布局更加复杂,则会出现复杂问题。什么是最有效的选择?Android:实现错误屏幕
伪代码如下:
<LinearLayout
android:id="@+id/mainLayout"
>
.. layout code
<LinearLayout
android:id="@+id/errorLayout"
android:visibility="gone"
>
</LinearLayout>
</LinearLayout>
编辑:我以前参与在某些情况下ViewStub的组合最终的解决方案(其中背景动作需要是不可见的,但我不希望在消耗内存可能不会显示的东西)和DialogFragment(后台活动需要透明显示)。这个问题促使我认识的众多android开发人员之间进行了激烈的离线辩论 - 其中一些人支持下面给出的活动答案,因为它最好支持材料设计样式,而其他人则支持使用对话框片段,因为使用活动来实现类似这可能是矫枉过正的(额外的类,需要将其添加到清单,重复的工具栏逻辑等)。感谢所有贡献的人。
第二次编辑:在处理完这个问题之后,我还没有确定对话框片段解决方案。如果您在屏幕上显示错误,并且您希望用户认为它是屏幕的有机部分,则顶部工具栏必须是可点击的。一个dialogfragment离开顶部工具栏可见,但点击它并没有被注册,因为即使dialogfragment的尺寸没有占用整个屏幕,它仍然在片段管理器的“整个”屏幕上它自己的层中,并且窃取了所有点击。我倾向于认为真正做到这一点的唯一方法是使用viewstub。
为什么你不能使用DialogFragment与您的错误信息? –
查看我之前关于dialogfragment回答的对话 – Jon