Search code examples
javaandroidfindviewbyid

Manupulate main activity elements from non-activity java class


I want to manupulate main activity elements such as TextView or Radiobutton from another java class. Also get information about text like getText() function. How can I do this ?

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");

}

I tried like this but it didnt work. Any help ?


Solution

  • You should not be extending Activity unless it is really an activity not just a POJO. What you need to do is pass the activity as a parameter to the other class and use that for the 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");
    
     }
    }