首页 > 解决方案 > 单击 ListView 项目时应用程序不断崩溃

问题描述

您好,我是 Java 和一般编码的新手。

我正在使用 aListView来显示存储在数组中的不同单词集。单击列表中的项目将根据单击的项目显示数组中的单词。我已经在语句中添加了显示文本和显示提示的代码行,if现在当我单击项目 0 时,我的应用程序不断崩溃。

有人可以给我一些建议吗?

这是我的代码:

package com.example.anotherapp;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    int i = -1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        chooseGame();
    }

    public void chooseGame() {
        final ArrayList<String> arrayList = new ArrayList<String>();
        final TextView wordTextView = findViewById(R.id.wordTextView);
        final EditText editTextView = findViewById(R.id.enterEditText);
        final Button nextButton = findViewById(R.id.nextButton);
        ArrayList<String> gamesArrayList = new ArrayList<String>();
        gamesArrayList.add("A Vegan's Worst Nightmare");
        gamesArrayList.add("The Wet Floor Sign");
        gamesArrayList.add("The Meaning of life");
        gamesArrayList.add("Campfire Story");
        gamesArrayList.add("The Crocobearamouse");
        final ListView gamesListView = findViewById(R.id.gamesListView);
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
                this,
                android.R.layout.simple_list_item_1,
                gamesArrayList);
        gamesListView.setAdapter(arrayAdapter);
        gamesListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                                                 @Override
                                                 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                                                     if (position == 0) {

                                                         gamesListView.setVisibility(View.INVISIBLE);
                                                         editTextView.setVisibility((View.VISIBLE));
                                                         wordTextView.setVisibility((View.VISIBLE));
                                                         nextButton.setVisibility(View.VISIBLE);


                                                         String[] zeroArray = {"Food", "Adjective", "Proper Noun", "Name"};
                                                         String displayHint = "";
                                                         String displayText = "";

                                                         displayText = enterWord() + zeroArray[i];
                                                         displayHint = zeroArray[i];

                                                         wordTextView.setText(displayText);
                                                         editTextView.setHint(displayHint);
                                                     }
                                                 }
                                             }
        );
    }

    public String enterWord() {
        String[] zeroArray = {"Food", "Adjective", "Proper Noun", "Name"};
        String entry;
        if (zeroArray[i].equals("Adjective")) {
            entry = "Enter an ";
        } else {
            entry = "Enter a ";
        }
        return entry;
    }

    public void nextWord(View view) {
        i++;
    }
}

标签: javaandroidandroid-studiolistviewcrash

解决方案


您的变量i从开始-1,并且您的代码调用array[i],我认为这是导致您的应用程序崩溃的主要原因


推荐阅读