我应该使用PopupWindow还是DialogFragment来接受input?

我正在用3个Spinners和一个EditText做一个Popup 。 在阅读了许多博客和文章之后,我无法决定哪个是最好的select, PopupWindowDialogFragment

标准是:

  1. 与不同Android版本的兼容性
  2. 性能

如果有更好的办法做到这一点,我愿意改变观点。

非常感谢你。

DialogFragment:

  • 优点:
  • 缺点:

popup窗口:

  • 优点:
  • 缺点:

编辑:结论

DialogFragment允许您使用更复杂的function。 另一个重要的事情是它更便于使用,因为它可以让用户一次打开多个片段。 碎片是一个更加dynamic的解决scheme,它们是更新的Android版本的标准。

PopupWindow更简单,对用户的简单问题很有帮助。

Solutions Collecting From Web of "我应该使用PopupWindow还是DialogFragment来接受input?"

支持库可以给你一个与旧版本的android兼容的DialogFragment 。 继续使用片段对话框cuz你所要求的是非常特殊的(3个spinners和一个edittext),只需右键点击你的项目并按下“Android工具” – >“添加支持库”确保当你使用对话框import

 import android.support.v4.app.DialogFragment; 

否则,你会最终使用对话框没有支持:P。 对话框片段和使用您认为合适的视图(甚至是由您自己创build的布局)的function,您将拥有更多的灵活性。

对话片段

优点:

  • 能够添加任何视图
  • 易于编辑
  • 只需修改布局即可适应平板电脑或手机的横向或纵向
  • 可以奉献一个全新的课程来修改你的方式

缺点:

  • 假设更多的记忆更复杂的是你的观点
  • 较难代码

popup窗口:

优点:

  • 更简单
  • 更容易编码
  • 这是更标准的,所以用户很难与之混淆

缺点:

  • 更简单,这意味着更less的控制
  • 仅限于几个模板

这些只是从我的头脑和我的经验,但你应该阅读文件

http://developer.android.com/reference/android/widget/PopupWindow.html

http://developer.android.com/reference/android/app/DialogFragment.html

如果你需要在你的窗口EditText,并希望让你的用户能够长时间的粘贴(编辑文本的正常行为),那么不要使用popupwindow,我很难find它:

在popupwindow上的一个相当大的缺点是长按编辑文本将不会带来默认的上下文菜单(复制/粘贴/select所有,…)。也有报道在一些设备,这实际上导致应用程序崩溃。 请参阅https://code.google.com/p/android/issues/detail?id=62508