java - How to call a method in an Activity from another class -


i working on sms application , have method in mainactivity perform button click:

public void updatemessage() {     viewmessages.performclick(); } 

this method works fine , performs button click when call method inside mainactivity class.
but, when call method other class shown below, call main activity's updatemessage method intentservicehandler class, getting nullpointerexception:

java.lang.nullpointerexception: attempt invoke virtual method 'boolean android.widget.button.performclick()' on null object reference

public class intentservicehandler extends intentservice {      public intentservicehandler() {        super("intentservicehandler");     }      @override     protected void onhandleintent(intent intent) {         string message = intent.getstringextra("message");         transactiondatabase transactiondb = new transactiondatabase(this, 1);         transactiondb.addmessage(message);         mainactivity mainactivity = new mainactivity();         mainactivity.updatemessage();     } } 

how can handle this?

edit: tried make updatemessage method static, , following exception

android.view.viewrootimpl$calledfromwrongthreadexception: original thread created view hierarchy can touch views.

don't call method of activity in intentservice, try use intent communicate between activity , intentservice.

  1. replace last 2 statements onhandleintent()

    intent intent = new intent(); broadcastintent.setaction(mainactivity.update_message); broadcastintent.addcategory(intent.category_default); sendbroadcast(intent); 
  2. and should register broadcastreceiver in oncreate() of mainacitivty like

    private broadcastreceiver receiver;  @override  public void oncreate(bundle savedinstancestate){      // ....      intentfilter filter = new intentfilter();     filter.addaction(update_message);      receiver = new broadcastreceiver() {         @override          public void onreceive(context context, intent intent) {         // based on intent's action          // example, call updatemessage()         }      };      registerreceiver(receiver, filter); }  
  3. onhandleintent of intentservice run in thread (instead of main thread / ui thread), updating ui components in onhandleintent isn't permitted.


Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -