本文介绍了Android的 - 给人的EditText异常IndexOutOfBounds同时使用textAllCaps的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图创建一个使用相对布局一个非常简单的注册页面。此注册页面被链接到一个称为RegistrationFragment片段
我对这个布局5的EditText字段:姓名,电话号码,电子邮件,密码和确认密码。出于某种原因,我可以输入文本的密码和确认密码,但每当我试着输入任何文字到其他领域,他们立即崩溃与IndexOutOfBounds异常的应用程序。
下面是完整的堆栈跟踪:
java.lang.IndexOutOfBoundsException
在android.graphics.Paint.getTextRunAdvances(Paint.java:1879)
在android.text.TextLine.handleText(TextLine.java:747)
在android.text.TextLine.handleRun(TextLine.java:898)
在android.text.TextLine.measureRun(TextLine.java:414)
在android.text.TextLine.measure(TextLine.java:293)
在android.text.TextLine.metrics(TextLine.java:267)
在android.text.Layout.getLineExtent(Layout.java:998)
在android.text.Layout.drawText(Layout.java:329)
在android.widget.Editor.drawHardwareAccelerated(Editor.java:1380)
在android.widget.Editor.onDraw(Editor.java:1303)
在android.widget.TextView.onDraw(TextView.java:5163)
在android.view.View.draw(View.java:14465)
在android.view.View.getDisplayList(View.java:13362)
在android.view.View.getDisplayList(View.java:13404)
在android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3077)
在android.view.View.getDisplayList(View.java:13300)
在android.view.View.getDisplayList(View.java:13404)
在android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3077)
在android.view.View.getDisplayList(View.java:13300)
在android.view.View.getDisplayList(View.java:13404)
在android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3077)
在android.view.View.getDisplayList(View.java:13300)
在android.view.View.getDisplayList(View.java:13404)
在android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3077)
在android.view.View.getDisplayList(View.java:13300)
在android.view.View.getDisplayList(View.java:13404)
在android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3077)
在android.view.View.getDisplayList(View.java:13300)
在android.view.View.getDisplayList(View.java:13404)
在android.view.HardwareRenderer $ GlRenderer.buildDisplayList(HardwareRenderer.java:1570)
在android.view.HardwareRenderer $ GlRenderer.draw(HardwareRenderer.java:1449)
在android.view.ViewRootImpl.draw(ViewRootImpl.java:2377)
在android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2249)
在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1879)
在android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:996)
在android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:5600)
在android.view.Choreographer $ CallbackRecord.run(Choreographer.java:761)
在android.view.Choreographer.doCallbacks(Choreographer.java:574)
在android.view.Choreographer.doFrame(Choreographer.java:544)
在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:747)
在android.os.Handler.handleCallback(Handler.java:733)
在android.os.Handler.dispatchMessage(Handler.java:95)
在android.os.Looper.loop(Looper.java:136)
在android.app.ActivityThread.main(ActivityThread.java:5001)
在java.lang.reflect.Method.invokeNative(本机方法)
在java.lang.reflect.Method.invoke(Method.java:515)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:785)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
在dalvik.system.NativeStart.main(本机方法)
我的XML布局文件:
<?XML版本=1.0编码=UTF-8&GT?;
<的RelativeLayout的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:背景=#e5e5e5><的TextView
机器人:ID =@ + ID / fragment_registration_title
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_marginBottom =@扪/ activity_vertical_margin
机器人:layout_marginTop =@扪/ activity_vertical_margin
机器人:layout_marginRight =@扪/ activity_horizontal_margin
机器人:layout_marginLeft =@扪/ activity_horizontal_margin
机器人:文字=@字符串/ registration_title
机器人:textAllCaps =真
机器人:TEXTSIZE =35SP
机器人:layout_centerHorizontal =真
机器人:文字颜色=@色/蓝
/>< RelativeLayout的
机器人:ID =@ + ID / fragment_registration_edit_text_layout
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:layout_marginLeft =30dp
机器人:layout_marginRight =30dp
机器人:layout_below =@ ID / fragment_registration_title
机器人:layout_centerHorizontal =真正的> <的EditText
机器人:ID =@ + ID / fragment_registration_legal_name
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:重力=CENTER_HORIZONTAL
机器人:提示=@字符串/ full_name_prompt
机器人:MAXLINES =1
机器人:textAllCaps =真
机器人:背景=@绘制/ edit_text_top_rounded
/> <的EditText
机器人:ID =@ + ID / fragment_registration_cell_phone
机器人:layout_below =@ ID / fragment_registration_legal_name
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:重力=CENTER_HORIZONTAL
机器人:提示=@字符串/ cell_phone_prompt
机器人:MAXLINES =1
机器人:textAllCaps =真
机器人:背景=@绘制/ edit_text_white
/> <的EditText
机器人:ID =@ + ID / fragment_registration_email
机器人:layout_below =@ ID / fragment_registration_cell_phone
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:重力=CENTER_HORIZONTAL
机器人:提示=@字符串/ email_prompt
机器人:MAXLINES =1
机器人:textAllCaps =真
机器人:背景=@绘制/ edit_text_white
/> <的EditText
机器人:ID =@ + ID / fragment_registration_password
机器人:layout_below =@ ID / fragment_registration_email
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:重力=CENTER_HORIZONTAL
机器人:提示=@字符串/ confirm_password_prompt
机器人:MAXLINES =1
机器人:背景=@绘制/ edit_text_bottom_rounded
/> < / RelativeLayout的><按钮
机器人:ID =@ + ID / fragment_registration_button
机器人:背景=@绘制/ button_registration
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:文字=@字符串/ registration_button
机器人:文字颜色=#FFFFFF
机器人:layout_below =@ + ID / fragment_registration_edit_text_layout
机器人:layout_marginTop =5DP
机器人:layout_marginLeft =30dp
机器人:layout_marginRight =30dp
机器人:layout_alignParentLeft =真
机器人:layout_alignParentRight =真
/>
< / RelativeLayout的>
如果相关的,我在寻找我的片段code。使用下面的,这是我的主要活动中用于测试目的的onCreate()方法的末尾。我得到了同样的错误,当我试图测试注册为活动虽然。
RegistrationFragment测试=新RegistrationFragment();
的setContentView(R.layout.fragment_registration);
解决方案
好吧,我知道它的晚..但它可以帮助其他人在未来..
我在我的应用程序曾与 textAllCaps
同样的问题,为的EditText
。
So, I searched for it and found better solution for this.
E.g.
<EditText
android:id="@+id/edittext1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textCapCharacters"
android:hint="@string/first_name"
android:padding="10dp" >
</EditText>
If we use android:inputType="textCapCharacters"
it will convert all characters into UPPER CASE, like we want in textAllCaps
.
这篇关于Android的 - 给人的EditText异常IndexOutOfBounds同时使用textAllCaps的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!