gpt4 book ai didi

java - setText ("") 导致 Android 应用程序崩溃

转载 作者:行者123 更新时间:2023-12-02 09:43:30 26 4
gpt4 key购买 nike

经过几个小时的研究和测试,我无法弄清楚为什么我的应用程序在调用此函数时崩溃

    inputLocation.setText("");  inputLocation.setText(null); 

这样就可以正常工作:

    inputLocation.setText("your text");

    inputLocation.setText(editText.getText().toString()); 

等等

任何帮助将不胜感激。谢谢。

inputLocation.addTextChangedListener

    // / Execute code without the use of the save changes button.
// ///////////////////////////////////////////
inputLocation.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before,
int count) {

/* Process to check type */
String location_string = inputLocation.getText().toString();
String first_location_char = location_string.substring(0, 1);
if (inputLocation.getText().toString().length() == locationsize) {
String last_location_char = location_string.substring(8);

if (last_location_char.equals("L")
&& first_location_char.equals("L")) {

inputLocation.setText(location_string.substring(1, 8),
TextView.BufferType.EDITABLE);
new UpdateLocation().execute();

} else if (!first_location_char.isEmpty()
&& !last_location_char.isEmpty()) {

alertDialog = new AlertDialog.Builder(
CheckLocationActivity.this).create();
alertDialog.setTitle("Wrong Code for Location");
alertDialog
.setMessage("Please scan one more time the correct barcode!");

alertDialog.setButton(-1, getString(R.string.Ok),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
inputLocation.setText("",
TextView.BufferType.EDITABLE);
}
});
/*
* alertDialog.setButton(-2, getString(R.string.No), new
* DialogInterface.OnClickListener() {
*
* @Override public void onClick(DialogInterface dialog,
* int which) { // do nothing dialog will dismiss } });
*/
alertDialog.show();

}

}
}

public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}

public void afterTextChanged(Editable s) {
}
});

// / Execute code without the use of the save changes button.
// ///////////////////////////////////////////

代码部分

    alertDialog = new AlertDialog.Builder(
CheckLocationActivity.this).create();
alertDialog.setTitle("Wrong Code for Location");
alertDialog
.setMessage("Please scan one more time the correct barcode!");

alertDialog.setButton(-1, getString(R.string.Ok),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
inputLocation.setText("",
TextView.BufferType.EDITABLE);
}
});
/*
* alertDialog.setButton(-2, getString(R.string.No), new
* DialogInterface.OnClickListener() {
*
* @Override public void onClick(DialogInterface dialog,
* int which) { // do nothing dialog will dismiss } });
*/
alertDialog.show();

日志文件

11-05 16:41:33.638: W/dalvikvm(19191): threadid=1: thread exiting with uncaught exception (group=0x41513700)11-05 16:41:33.648: E/AndroidRuntime(19191): FATAL EXCEPTION: main11-05 16:41:33.648: E/AndroidRuntime(19191): java.lang.StringIndexOutOfBoundsException: length=0; regionStart=0; regionLength=111-05 16:41:33.648: E/AndroidRuntime(19191):    at java.lang.String.startEndAndLength(String.java:583)11-05 16:41:33.648: E/AndroidRuntime(19191):    at java.lang.String.substring(String.java:1464)11-05 16:41:33.648: E/AndroidRuntime(19191):    at com.dev.assetlocation.CheckLocationActivity$3.onTextChanged(CheckLocationActivity.java:162)11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.widget.TextView.sendOnTextChanged(TextView.java:7318)11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.widget.TextView.setText(TextView.java:3774)11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.widget.TextView.setText(TextView.java:3629)11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.widget.EditText.setText(EditText.java:80)11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.widget.TextView.setText(TextView.java:3604)11-05 16:41:33.648: E/AndroidRuntime(19191):    at com.dev.assetlocation.CheckLocationActivity$2.onTextChanged(CheckLocationActivity.java:103)11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.widget.TextView.sendOnTextChanged(TextView.java:7318)11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.widget.TextView.handleTextChanged(TextView.java:7377)11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:9076)11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.text.SpannableStringBuilder.sendTextChanged(SpannableStringBuilder.java:962)11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:496)11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:435)11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:30)11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:673)11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.view.inputmethod.BaseInputConnection.commitText(BaseInputConnection.java:197)11-05 16:41:33.648: E/AndroidRuntime(19191):    at com.android.internal.widget.EditableInputConnection.commitText(EditableInputConnection.java:183)11-05 16:41:33.648: E/AndroidRuntime(19191):    at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:279)11-05 16:41:33.648: E/AndroidRuntime(19191):    at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:77)11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.os.Handler.dispatchMessage(Handler.java:99)11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.os.Looper.loop(Looper.java:137)11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.app.ActivityThread.main(ActivityThread.java:5103)11-05 16:41:33.648: E/AndroidRuntime(19191):    at java.lang.reflect.Method.invokeNative(Native Method)11-05 16:41:33.648: E/AndroidRuntime(19191):    at java.lang.reflect.Method.invoke(Method.java:525)11-05 16:41:33.648: E/AndroidRuntime(19191):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)11-05 16:41:33.648: E/AndroidRuntime(19191):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)11-05 16:41:33.648: E/AndroidRuntime(19191):    at dalvik.system.NativeStart.main(Native Method)11-05 16:41:36.201: D/libEGL(19240): loaded /system/lib/egl/libEGL_adreno200.so11-05 16:41:36.201: D/libEGL(19240): loaded /system/lib/egl/libGLESv1_CM_adreno200.so11-05 16:41:36.201: D/libEGL(19240): loaded /system/lib/egl/libGLESv2_adreno200.so11-05 16:41:36.211: I/Adreno200-EGL(19240): : EGL 1.4 QUALCOMM Build: Iabe52cfaeae4c5fab1acacfe6f056ba15fa9327411-05 16:41:36.241: D/OpenGLRenderer(19240): Enabling debug mode 0

最佳答案

com.dev.assetlocation.CheckLocationActivity$3(匿名内部类#3)监听该文本的更改。 onTextChanged (在 CheckLocationActivity$3 中)使用 String.substring,这会导致错误,因为空 String 中没有有效索引.

您的监听器(CheckLocationActivi‌​ty.java 第 162 行)应检查文本是否为空或 null

关于java - setText ("") 导致 Android 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19799853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com