java - 尝试更新 MainActivity 之外的 UI 元素
问题描述
作为序言,我是一名学生,对 Java/编程很陌生。我对android框架很陌生。我希望 5 个骰子 ImageView 在一个循环中循环,看起来就像它们在滚动一样。我相信我遇到的主要问题是我的 UI 更改发生在 onCreate() 之外。有没有办法连接 MainActivity 和一个单独的 Java 类?
主要活动
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button rollButton = (Button) findViewById(R.id.rollButton);
rollButton.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Thread die1 = new Thread((Runnable) new ShipDriver(0));
die1.start();
独立的 Java 类
public class ShipDriver implements Runnable {
ImageView imageView;
ImageView imageView2;
ImageView imageView3;
ImageView imageView4;
ImageView imageView5;
int dieIndex;
int rolled;
Handler myHandlerObj;
Runnable runnable;
public static final Random RANDOM = new Random();
public ShipDriver(int tdieIndex) {
dieIndex = tdieIndex;
}
public void run() {
rolled = randomDiceValue();
Handler myHandlerObj = new Handler(Looper.getMainLooper());
for(int i=0; i<40; i++) {
try {
Thread.sleep(1000);
}catch (InterruptedException e) {
e.printStackTrace();
}
if (dieIndex == 0) {
myHandlerObj.post(new Runnable() {
@Override
public void run() {
switch (rolled) {
case 1:
imageView.setImageResource(R.drawable.die1);
case 2:
imageView.setImageResource(R.drawable.die2);
case 3:
imageView.setImageResource(R.drawable.die3);
case 4:
imageView.setImageResource(R.drawable.die4);
case 5:
imageView.setImageResource(R.drawable.die5);
case 6:
imageView.setImageResource(R.drawable.die6);
}
}
});
if (dieIndex == 1) {
myHandlerObj.post(new Runnable() {
@Override
public void run() {
switch (rolled) {
case 1:
imageView2.setImageResource(R.drawable.die1);
case 2:
imageView2.setImageResource(R.drawable.die2);
case 3:
imageView2.setImageResource(R.drawable.die3);
case 4:
imageView2.setImageResource(R.drawable.die4);
case 5:
imageView2.setImageResource(R.drawable.die5);
case 6:
imageView2.setImageResource(R.drawable.die6);
}
}
});
}
......
在 logcat 中,我收到此错误:
attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
我对此有点不知所措。任何见解将不胜感激。
解决方案
您显示的错误是在对象未初始化时出现的。首先你初始化你的 imageview 对象。你显示的错误不是线程错误。
推荐阅读
- excel - 从 SQL Server 检索和导出数百万行
- javascript - IIFE 在 javascript 中上课
- active-directory - Samba GPO 策略不适用于 Windows 客户端
- ios - 在 M1 Mac 上运行的 iOS 应用程序的“文件”在哪里?
- mysql - MySQL子查询拉取满足多列数据点的结果
- c++ - 找不到包含文件“字符串”
- swift - 我可以在 xcode 上使用自定义 Swiftlint 安装路径吗?
- c# - 如何将类添加到组合框并应用于图片框?
- spring - Spring - 无法将 Pageable 设置为小于总结果大小
- python - 创建了太多临时目录