java - Android 从 AsyncTask 访问 MainActivity

标签 java android android-asynctask

我的应用程序在单击按钮后崩溃,但代码执行正常。

public void makeLead(View v) throws Exception {
    try {
       RegisterTimer rt = new RegisterTimer();
       rt.ma = this;
       rt.execute(null);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
public void log(String msg)
{
    final TextView tv = (TextView)findViewById(R.id.editText);
    tv.append(msg);
}
private class RegisterTimer extends AsyncTask {
    public MainActivity ma;


    @Override
    protected Object doInBackground(Object[] objects) {
        ma.log("ausd");
        return null;
    }
}

makeLeadonClick 事件。方法 ma.log 生成错误,但工作正常(msg 添加到 textEdit)。当我删除 ma.log 时,应用程序不会崩溃。我的 AndroidStudio 中没有日志,因此看不到错误消息。怎么了?

最佳答案

您无法触摸非 UI 线程中的View

并且您正在后台 Thread 中将文本附加到 TextView,这是不允许的。

我希望 RegisterTimer 内的 MainActivity 初始化没有问题,因为您没有手动创建 Activity 实例。您的初始化方式是正确的rt.ma = this
为什么只需要 AsyncTask 来更改 TextView 的文本?

关于java - Android 从 AsyncTask 访问 MainActivity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22556057/

相关文章:

Android:如何使用 quickblox 获取用户在线/离线状态?

java - 使用具有多个页面的 API 路由获取 JSON 数据

java - 如何在 AsyncTask 中创建进度对话框?

java - 从 Junit 运行时,System.out.print 不会输出到控制台

java - CTab文件夹渲染器

android - 从数据库中读取一个值

android - 为什么在 onResume() 中的 View 上调用 getWidth() 返回 0?

android - 从 Asynctask 进程获取通知

java - ClassNotFoundException 和应用程序崩溃

java - 从本地主机上的 Superfeedr 发出 POST 请求