2014-06-26 74 views
0

我有2類:如何從Java中的另一個對象調用對象的方法?

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

回答

1

傳遞的MainActivityMyAsyncTask的引用:

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(); 
+0

該死的!構造函數,正確:)一切都很完美。正是我需要的。謝謝! – blinkapec

1

一般來說,調用它的方法是引用MainActivity類型的對象並在其上調用此方法。在這個特定的Android場景中,這是一個好主意,是另一個問題。

+0

呀,但我不知道如何通過參考:)也謝謝你。 – blinkapec

0

這可能是值得研究使用異步庫。

使用一個庫來幫助處理異步回調可能對此非常有幫助,因爲您可以啓動微調,調用您的api,然後在onSuccess函數或類中的成功回調方法中停止微調。

這是一個我通常使用:

LoopJ's Async HTTP Callback Library

這將處理GET與很多很酷的功能,如自定義超時,JSON格式的onSuccess()和onFailure處POST請求( )方法等等。這個庫也有很多工作的例子!

+0

哇,這很有趣。我會看看...謝謝! – blinkapec

相關問題