【发布时间】:2019-07-12 23:42:05
【问题描述】:
我的问题可能与标题不同。我有一个默认为“visibility.Gone”的Edittext:
XML 文件:
<EditText
android:id="@+id/edit5"
android:layout_width="203dp"
android:layout_height="wrap_content"
android:hint="edit5"
android:inputType="textPersonName"
android:gravity="center"
android:visibility="gone" />
有一个名为“increasebtn”的按钮,点击后可以看到编辑文本:
if (edit5.getVisibility() == View.GONE) {
edit6.setVisibility(View.VISIBLE);
edit5.setVisibility(View.VISIBLE);
}
我有一个 for 循环,可以在 textview 中打印一些字符串:
String editt1 = edit1.getText().toString();
String editt2 = edit2.getText().toString();
String editt3 = edit3.getText().toString();
String editt4 = edit4.getText().toString();
String editt5 = edit5.getText().toString();
String[] names = {editt2, editt1, editt3, editt4};
List<String> namesstr = Arrays.asList(names);
Collections.shuffle(namesstr);
names = namesstr.toArray(new String[namesstr.size()]);
StringBuilder text = new StringBuilder();
for (int i = 0; i < names.length; i = i + 2) {
text.append(names[i] + " with " + names[i + 1]);
}
textView.setText(text.toString());
这些代码没问题,结果是这样的:
金和山姆 约翰与爱迪生
问题是
当我将 VISIBLE(不是不可见)添加到名为“names”的字符串时,应用程序崩溃。问题不在于
String editt5 = edit5.getText().toString();
是这样的:
String[] names = {editt2, editt1, editt3, editt4,editt5};
当我将“editt5”添加到字符串时,应用程序崩溃:(
【问题讨论】:
-
异常的堆栈跟踪可能会有所帮助。
-
也许,因为您添加的是 editt5 而不是 editt6,所以当 for 循环中 i=5 的值时,它会尝试获取数组 (i+1) 中的插槽 6,这不会存在,这就是你得到错误的原因......