本文介绍了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:机器人=htt​​p://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_horizo​​ntal_margin
    机器人:layout_marginLeft =@扪/ activity_horizo​​ntal_margin
    机器人:文字=@字符串/ registration_title
    机器人:textAllCaps =真
    机器人:TEXTSIZE =35SP
    机器人:layout_centerHorizo​​ntal =真
    机器人:文字颜色=@色/蓝
    />< 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_centerHorizo​​ntal =真正的>    <的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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 21:49