【发布时间】:2021-02-26 02:28:57
【问题描述】:
这段代码在 Eclipse 中运行良好,但现在我导入到 android studio 4.1.1。我拥有所有最新更新和正确的库,尝试使缓存无效并重新启动、清理、尝试不同的设备并尝试不同的 API 级别。我的应用程序启动良好,但是当我单击任何列表项时它会崩溃。第 154 行是数组排序。
@SuppressLint("UseValueOf")
public class CribActivity extends Activity
{
private ListView lv1;
private EditText et;
private final String[] lv_arr ={
"item 1",
"items amid 1 - 66 here is a lot",
"Item 66th"
};
private final ArrayList<String> array_sort= new ArrayList<>();
int textlength=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lv1 = findViewById(R.id.listView);
et = findViewById(R.id.EditText01);
lv1 = findViewById(R.id.listView);
lv1.setAdapter(
new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, lv_arr));
lv1.setTextFilterEnabled(true);
et.addTextChangedListener(new TextWatcher()
{
public void afterTextChanged(Editable s)
{
// Abstract Method of TextWatcher Interface.
}
public void beforeTextChanged(CharSequence s,
int start, int count, int after)
{
// Abstract Method of TextWatcher Interface.
}
public void onTextChanged(CharSequence s,
int start, int before, int count)
{
textlength = et.getText().length();
array_sort.clear();
for (String value : lv_arr) {
if (textlength <= value.length()) {
if (et.getText().toString().equalsIgnoreCase(
(String)
value.subSequence(0,
textlength))) {
array_sort.add(value);
}
}
}
lv1.setAdapter(new ArrayAdapter<>
(CribActivity.this,
android.R.layout.simple_list_item_1, array_sort));
}
});
lv1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String name;
name = array_sort.get(position);
for (int i = 0; i < lv_arr.length; i++) {
if (lv_arr[i]
.equalsIgnoreCase(
name)) {
position = i;
break;
}
}
String itemname = Integer.toString(position);
Intent intent = new Intent();
intent.setClass(CribActivity.this, ViewActivity.class);
Bundle b = new Bundle();
b.putString("defStrID", itemname);
intent.putExtras(b);
startActivity(intent);
}
});
}
日志猫:
E/FirebaseInstanceId: Token retrieval failed: SERVICE_NOT_AVAILABLE
E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
运行中的错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: ru.tablica.sputnikovyh, PID: 13145
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.get(ArrayList.java:437)
at ru.tablica.sputnikovyh.CribActivity$2.onItemClick(CribActivity.java:154)
at android.widget.AdapterView.performItemClick(AdapterView.java:318)
at android.widget.AbsListView.performItemClick(AbsListView.java:1159)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3136)
at android.widget.AbsListView.onTouchUp(AbsListView.java:4064)
at android.widget.AbsListView.onTouchEvent(AbsListView.java:3822)
at android.view.View.dispatchTouchEvent(View.java:12513)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3024)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2705)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:440)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1830)
at android.app.Activity.dispatchTouchEvent(Activity.java:3400)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:398)
at android.view.View.dispatchPointerEvent(View.java:12752)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5106)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4909)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4426)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4479)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4445)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4585)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4453)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4642)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4426)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4479)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4445)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4453)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4426)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7092)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7061)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7022)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7195)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:186)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:326)
at android.os.Looper.loop(Looper.java:160)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
【问题讨论】:
-
lv_arr没有项目,因此无法返回值。请提供您如何初始化lv_arr -
private final String[] lv_arr ={...list items}; private final ArrayList<String> array_sort= new ArrayList<>(); int textlength=0; -
您是否在这些列表中填充了数据?
-
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); lv1 = findViewById(R.id.listView); et = findViewById(R.id.EditText01); lv1 = findViewById(R.id.listView); lv1.setAdapter( new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, lv_arr)); lv1.setTextFilterEnabled(true); -
是它在数组中的数据
标签: android android-studio arraylist crash onitemclick