Android如何调用UI线程

时间:2015-12-04 02:43:32

标签: java android

目前,我正试图从网上下载一些内容,并希望将其推送到ListView:

我创建了一个Runnable来执行下载内容部分:

Runnable postTest = new Runnable() {
    @Override
    public void run() {
        try {
            URL u = new URL("192.168.1.1/getList.php");
            ContentValues c = new ContentValues();
            c.put("token", networkCommunication.getToken());
            String k = networkCommunication.downloadContent(u, c);
            getParent().runOnUiThread(
                    new Runnable() {
                        public void run() {
                            Toast.makeText(Main.this, k, Toast.LENGTH_SHORT).show();
                        }
                    });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
};

代码在String k = networkCommunication.downloadContent(u, c);

之前正常工作

然而," K"变量在" Run"中无法访问方法,我也尝试将k变量更改为" Hello world" (即在完成下载内容时打印hello world),然后发生另一个异常:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.Activity.runOnUiThread(java.lang.Runnable)' on a null object reference

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

因为getParent()为NULL。根据文件:

  

public final Activity getParent()从:API Level 1

     

如果此视图是嵌入式子级,则返回父活动。

您可以参考这个类似的问题:Android Activity.getParent() always returning null