You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:点击按钮无法显示数组中随机词语问题求助

问题原因及修复方案

核心问题梳理

  • MainActivity里声明的ArrayList<String> SList成员变量从未初始化,是空对象,遍历的时候不会有任何内容输出,实际运行还隐含空指针异常风险
  • 你单独创建的SList类完全没有被调用,且逻辑设计错误:类里Sentence方法创建的SList是局部变量,方法执行结束就会被回收,根本没法给MainActivity传递数据
  • 现有printJoke方法是把所有列表内容拼接输出,不符合你要的「随机取单个内容展示」的需求
  • 还要确认布局文件里按钮是否添加了android:onClick="buttonClicked"属性,未添加的话点击事件不会触发

修改方案(不需要单独保留SList类,直接在MainActivity里实现即可)

修改后的MainActivity.java代码如下:

package com.example.arraytesting4;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Random;

public class MainActivity extends AppCompatActivity {
    ArrayList<String> SList;
    TextView Sentence;
    Random random = new Random();

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

        Sentence = findViewById(R.id.Sentence);
        // 初始化列表,添加你要的词语/句子
        initSentenceList();
    }

    private void initSentenceList() {
        SList = new ArrayList<>();
        SList.add("Apple");
        SList.add("Banana");
        SList.add("Ciku");
        SList.add("Danny ate the others.");
    }

    public void buttonClicked(View v){
        printRandomSentence();
    }

    public void printRandomSentence() {
        // 生成随机下标,范围是0到列表长度-1
        int randomIndex = random.nextInt(SList.size());
        // 取出对应下标的内容设置到TextView
        Sentence.setText(SList.get(randomIndex));
    }
}

额外检查项

打开你的activity_main.xml布局文件,确认按钮控件有如下属性:

android:onClick="buttonClicked"

如果没有的话加上即可,修改后重新运行就能实现点击按钮随机展示内容的效果。

内容的提问来源于stack exchange,提问作者Sophia Woon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 02:45:08