从非 activity java class 操作主要 activity 元素

Manupulate main activity elements from non-activity java class

我想从另一个 java class 操纵主要 activity 元素,例如 TextView 或 Radiobutton。还可以获取有关文本的信息,例如 getText() 函数。 我该怎么做?

public class main_activity extends AppCompatActivity {

Button query;

BusTimer bus_timer = new BusTimer();

 protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

        setContentView(R.layout.main_activity);

query=(Button) findViewById(R.id.b_sorgu);


query.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                bus_timer.onCreate(savedInstanceState);

            }


        });

}

public class BusTimer extends Activity{

TextView cMeter;

protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);


cMeter = (TextView) findViewById(R.id.cMetre);

cMeter.setText("Hi");

}

我这样试过,但没用。有帮助吗?

有 2 种方法可以从不同的地方访问元素和函数 class

  1. 使用静态元素
  2. 使用构造函数

你不应该扩展 Activity 除非它真的是一个 activity 而不仅仅是一个 POJO。 您需要做的是将 activity 作为参数传递给另一个 class 并将其用于 findViewById:

BusTimer bus_timer = new BusTimer(this);



public class BusTimer {


  TextView cMeter;

  public BusTimer(Activity activity){

  cMeter = (TextView) activity.findViewById(R.id.cMetre);

  cMeter.setText("Hi");

 }
}