我创建了以下代码,以获取多个EditText
的内容:
Integer data[] = new Integer[4];
ListView listView = (ListView) findViewById(R.id.listView);
for (i=0;i < listView.getCount();i++){
LinearLayout layout = (LinearLayout) listView.getChildAt(i);
EditText et = (EditText) layout.findViewById(R.id.record_list_edit);
data[i] = Integer.parseInt(et.getText().toString());
}
我可以成功使用以下代码来获取第一个数字(或任何我想要的数字):
LinearLayout layout = (LinearLayout) listView.getChildAt(0);
EditText et = (EditText) layout.findViewById(R.id.record_list_edit);
data[0] = Integer.parseInt(et.getText().toString());
但是当我使用for
循环获取所有内容时,它会中断。
这是错误日志:
08-28 22:12:33.931 7814-7814/edu.nankai.soar.demof E/AndroidRuntime: FATAL EXCEPTION: main
Process: edu.nankai.soar.demof, PID: 7814
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
at android.view.View.performClick(View.java:4851)
at android.view.View$PerformClick.run(View.java:20016)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5506)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:952)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:4851)
at android.view.View$PerformClick.run(View.java:20016)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5506)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:952)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
Caused by: java.lang.ArrayIndexOutOfBoundsException: length=4; index=4
at edu.nankai.soar.demof.SensorsActivity.log(SensorsActivity.java:81)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:4851)
at android.view.View$PerformClick.run(View.java:20016)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5506)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:952)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
答案 0 :(得分:0)
真的,谢谢你,Shaishav
Integer data[] = new Integer[listView.getCount()];
我知道为什么我错了。我数错了数字......我太傻了......
答案来自Shaishav。