有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法从可运行的Android更新映像

我有以下实现runnable的类。当我启动线程时,我得到一个错误,阻止我更新图像。我尝试过设置图像,正如您将在runOnUiThread函数中看到的那样,但它不起作用。我希望最终每x秒更新一次图像,但我似乎无法做到这一点,除非我将线程放在主活动类中。一旦我把它搬出去,我就什么也不做了

public class Test implements Runnable {
    MainActivity activity;
    ArrayList<Media> media = new ArrayList<Media>();
    public Test(MainActivity activity){

        this.activity = activity;
    }

    public void run(){

        activity.runOnUiThread(new Runnable(){

            @Override
            public void run() {
                ImageView img= (ImageView) activity.findViewById(R.id.imageView1);
                img.setImageResource(R.drawable.ic_launcher_foreground);
            }
        });

    }

}

MainActivity.javaonCreate()函数中启动线程

    Test p = new Test(this);
    Thread t = new Thread(p);
    t.start();

那么我的错误是:

2019-10-31 19:26:47.274 5407-5407/com.desotomatrix.digitalsignageplayer E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.desotomatrix.digitalsignageplayer, PID: 5407
java.lang.NullPointerException: Attempt to invoke virtual method 'void 安卓.widget.ImageView.setImageResource(int)' on a null object reference
    at com.desotomatrix.digitalsignageplayer.Test$1.run(Test.java:30)
    at 安卓.os.Handler.handleCallback(Handler.java:873)
    at 安卓.os.Handler.dispatchMessage(Handler.java:99)
    at 安卓.os.Looper.loop(Looper.java:209)
    at 安卓.app.ActivityThread.main(ActivityThread.java:7021)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.安卓.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:486)
    at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:872)

共 (0) 个答案