如何从Java中的另一个对象调用对象的方法?

时间:2014-06-26 15:53:23

标签: java android class methods call

我有2个班级:

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 ...
    }
}

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?
    }
}

如何从MyAsyncTask调用setSomething(param)?

3 个答案:

答案 0 :(得分:1)

通常,调用它的方法是引用MainActivity类型的对象并在其上调用此方法。在这个特定的Android场景中,这是否是个好主意,是另一个问题。

答案 1 :(得分:1)

MainActivity的引用传递给MyAsyncTask

public class MyAsyncTask extends AsyncTask<String, Void, String>
{
    private MainActivity mainActivity;

    public MyAsyncTask(MainActivity mainActivity)
    {
        this.mainActivity = mainActivity;
    }
}

然后,每当在类MyAsyncTask中创建MainActivity的实例时,将thisMainActivity实例)传递给构造函数:

new MyAsyncTask(this).execute();

答案 2 :(得分:0)

使用异步库可能值得研究。

使用库来帮助处理异步回调对此非常有用,因为您可以启动微调器,调用api,然后在onSuccess函数或类中的成功回调方法中停止微调器。

这是我经常使用的那个:

<强> LoopJ's Async HTTP Callback Library

这将处理GET和POST请求,具有许多很酷的功能,如自定义超时,JSON格式,onSuccess()和onFailure()方法等。还有很多这个库的工作示例!< / p>