Search code examples
javaandroidclassmethodscall

How to call object's method from another object in Java?


I have 2 classes:

MainActivity.java

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new MyAsyncTask().execute("string");
    }

    public void setSomething(int param) {
        // ... some code here ...
    }
}

and

MyAsyncTask.java

public class MyAsyncTask extends AsyncTask<String, Void, String> {
    @Override
    protected String doInBackground(String... str) {
        return "Someting here";
    }

    @Override
    protected void onPostExecute(String jsonStr) {
         // how to call setSomething(param) from here?
    }
}

How to call setSomething(param) from MyAsyncTask?


Solution

  • Pass a reference of MainActivity to MyAsyncTask:

    public class MyAsyncTask extends AsyncTask<String, Void, String>
    {
        private MainActivity mainActivity;
    
        public MyAsyncTask(MainActivity mainActivity)
        {
            this.mainActivity = mainActivity;
        }
    }
    

    Then, whenever creating an instance of MyAsyncTask inside the class MainActivity, pass this (MainActivity instance) to the constructor:

    new MyAsyncTask(this).execute();