我在崩溃日志中发现“ NullPointerException:尝试在空对象引用上调用虚拟方法'void android.view.View.getBoundsOnScreen(android.graphics.Rect)'”的崩溃,并且验证了此崩溃的一些stackoverflow建议。我发现以下链接建议在TextInputLayout中使用提示而不是TextInputEditText,所以我想知道是什么使它与众不同?
下面的链接建议在TextInputLayout中使用提示: SO Google展示了在TextInputEditText中使用提示: Google_Recommendation
我尝试在TextInputLayout和TextInputEditText处都提示。提示在两个地方的效果都差不多。
我想知道两种方法之间的区别以及哪种方法更合适。
答案 0 :(得分:2)
在设计支持库中引入了TextInputLayout
来在EditText
或TextInputEditText
上显示浮动标签。 EditText
或TextInputEditText
必须用TextInputLayout
包裹起来才能显示浮动标签。
经验法则:TextInputLayout
应该包裹TextInputEditText
您应该在哪里放置提示
根据官方documentation
提示应该在 TextInputLayout 而不是 EditText 上设置。如果在XML的子 EditText 上指定了提示,则 TextInputLayout 可能仍然可以正常工作。 TextInputLayout 将使用 EditText的提示作为其浮动标签。但是,以后的修改提示的调用不会更新 TextInputLayout的提示。为避免意外行为,请在 TextInputLayout 而不是在 EditText 上调用setHint(CharSequence)和getHint()。
请注意,TextInputEditText
是EditText
的特殊子类,旨在用作TextInputLayout
的子代。
希望有帮助
答案 1 :(得分:-1)
正在回答,我还不能发表评论。
就我而言,我只是从华为设备收到您提到的崩溃。 将所有提示移至应用程序中的TextInputLayouts后,所有崩溃均已停止。
我的理解是,华为构建的android版本缺少导致崩溃的空检查。
我现在总是将提示放在TextInputLayout上。