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
相关产品推荐
相关产品推荐

