【问题标题】:How to call object's method from another object in Java?如何从Java中的另一个对象调用对象的方法?
【发布时间】:2025-12-09 07:10:01
【问题描述】:

我有 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)?

【问题讨论】:

    标签: java android class methods call


    【解决方案1】:

    MainActivity 的引用传递给MyAsyncTask

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

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

    new MyAsyncTask(this).execute();
    

    【讨论】:

    • 该死!构造函数,对 :) 一切都很完美。正是我需要的。谢谢!
    【解决方案2】:

    一般来说,调用它的方法是引用一个 MainActivity 类型的对象,然后在它上面调用这个方法。在这个特定的 Android 场景中这是否是一个好主意,是另一个问题。

    【讨论】:

    • 是的,但我不知道如何通过参考 :) 也谢谢你。
    【解决方案3】:

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

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

    这是我常用的:

    LoopJ's Async HTTP Callback Library

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

    【讨论】:

    • 哇,这很有趣。我去看看...谢谢!
    最近更新 更多