Java 如何从MainActivity中获取价值?

Java 如何从MainActivity中获取价值?,java,android,Java,Android,所以我有一个主要的活动: import android.content.pm.ActivityInfo; import android.os.Bundle; import android.view.View; import android.view.WindowManager; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; public class MainActivity e

所以我有一个主要的活动:

import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
private volatile boolean stopTask = false;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.layout);
   }
   
   public boolean getStopTask() {
      return stopTask;
   }
   
   public void startMyTask(View view) {
      stopTask = false;
      TextView textView = findViewById(R.id.text_view);
      MyTask myTask = new MyTask(10, textView);

      new Thread(myTask).start();
   }
   
   public void stopMyTask(View view) {
      stopTask = true;
   }
}
我被告知,通过获取MainActivity的实例并直接访问该函数,我可以从MyTask访问getStopTask()

我试过了,但我得到了一个错误:“无法在未调用Looper.prepare()的线程[thread-6,5,main]内创建处理程序。”

这是我的任务:

import android.widget.TextView;

public class MyTask implements Runnable {
    int seconds;
    TextView textView;

    MyTask(int seconds, TextView textView) {
        this.seconds = seconds;
        this.textView = textView;
    }

    @Override
    public void run() {

    MainActivity mainActivity = new MainActivity();

    for (int x = 0; x < seconds; x++) {
        boolean stopTask = mainActivity.getStopTask();

        if (stopTask)
           break;

        textView.setText(String.format("x: %s", x));

        try {
           Thread.sleep(1000);
        } catch (InterruptedException e) {
           e.printStackTrace();
        }    
      }
    }
}

如何从MyTask中获取stopTask的值?

我会将布尔值
stopTask
转换为静态值,并以这种方式使用它,而不是
getStopTask()

MainActivity.java:

public class MainActivity extends AppCompatActivity {
public static boolean stopTask = false;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.layout);
   }
   
   /*
   
   public boolean getStopTask() {
      return stopTask;
   }*/
   
   public void startMyTask(View view) {
      stopTask = false;
      TextView textView = findViewById(R.id.text_view);
      MyTask myTask = new MyTask(10, textView);

      new Thread(myTask).start();
   }
   
   public void stopMyTask(View view) {
      stopTask = true;
   }
}
MyTask.java:

public class MyTask implements Runnable {
    int seconds;
    TextView textView;

    MyTask(int seconds, TextView textView) {
        this.seconds = seconds;
        this.textView = textView;
    }

    @Override
    public void run() {

    //MainActivity mainActivity = new MainActivity();

    for (int x = 0; x < seconds; x++) {
        boolean stopTask = MainActivity.stopTask;

        if (stopTask)
           break;

        textView.setText(String.format("x: %s", x));

        try {
           Thread.sleep(1000);
        } catch (InterruptedException e) {
           e.printStackTrace();
        }    
      }
    }
}
公共类MyTask实现可运行{
整数秒;
文本视图文本视图;
MyTask(整数秒,文本视图文本视图){
这个。秒=秒;
this.textView=textView;
}
@凌驾
公开募捐{
//MainActivity MainActivity=新的MainActivity();
对于(int x=0;x
public class MyTask implements Runnable {
    int seconds;
    TextView textView;

    MyTask(int seconds, TextView textView) {
        this.seconds = seconds;
        this.textView = textView;
    }

    @Override
    public void run() {

    //MainActivity mainActivity = new MainActivity();

    for (int x = 0; x < seconds; x++) {
        boolean stopTask = MainActivity.stopTask;

        if (stopTask)
           break;

        textView.setText(String.format("x: %s", x));

        try {
           Thread.sleep(1000);
        } catch (InterruptedException e) {
           e.printStackTrace();
        }    
      }
    }
}