gpt4 book ai didi

android - 只有创建 View 层次结构的原始线程才能触及它的 View

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:52:23 24 4
gpt4 key购买 nike

我正在尝试让 ImageView 在我的可绘制文件夹中的 2 个图像之间设置动画。

我原以为一切正常,但日志显示错误:只有创建 View 层次结构的原始线程才能触及它的 View 。

这是我的代码:

public class ExerciseActivity extends Activity {
private ExercisesDataSource datasource;
private Cursor cursor;
private ImageView image_1_view;
private Timer _timer;
private int _index;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_exercise);

datasource = new ExercisesDataSource(this);
datasource.open();

cursor = datasource.fetchExercise(exerciseDataID);

image_1_view = (ImageView) findViewById(R.id.exercise_image);

_index = 1;
_timer = new Timer();
_timer.schedule(new TickClass(), 1000);

}

public class TickClass extends TimerTask
{
private int columnIndex;

@Override
public void run() {
if (_index == 1) {
columnIndex = cursor.getColumnIndex(MySQLiteHelper.COLUMN_IMAGE_1);
_index = 2;
}
else {
columnIndex = cursor.getColumnIndex(MySQLiteHelper.COLUMN_IMAGE_2);
_index = 1;
}

String image_1 = cursor.getString(columnIndex);
image_1 = image_1.replace(".png", "");
int resourceId = getResources().getIdentifier(getPackageName() + ":drawable/" + image_1, null, null);
image_1_view.setImageDrawable(getResources().getDrawable(resourceId));
}
}
}

我继续将类和函数设置为公开,但这并没有解决问题。

所有资源和一切都很好,我该如何解决这个错误?

最佳答案

TickClass 中的代码在另一个线程上运行。要从此处执行 UI 工作,请使用 runOnUiThread。查看docu了解详情。

runOnUiThread(new Runnable() {
public void run() {
image_1_view.setImageDrawable(getResources().getDrawable(resourceId));
}
});

关于android - 只有创建 View 层次结构的原始线程才能触及它的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14294287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com