2014-10-01 86 views
1

我一直在試圖爲Android編寫一個簡單的3類java應用程序,但我無法弄清楚一件事。如何解決在類之間傳遞數據的問題?在我來說,我有3類:在Java類之間進行通信

  1. 等待數據
  2. 一個插座上解析數據
  3. 寫在屏幕上的數據

第三類不能做網絡部分,因爲它涉及一個無法在Activity類中完成的等待循環。

那麼我應該怎麼做?

+0

您可以使用廣播接收器或監聽器 – Revathi 2014-10-01 13:57:13

+0

您需要定義「Java類之間的通信」的含義。你正在關於數據或事件還是其他事情? – Simon 2014-10-01 14:19:10

+0

使用處理程序。 https://developer.android.com/reference/android/os/Handler.html – Karakuri 2014-10-01 14:45:45

回答

2

您可以定義一個由「屏幕上寫入」類實現的「Listener」,以及「parses-the-data」類用於與之通話的Listener。例如:

class Parser { 
    private ParsingFinishedListener callback; 

    public Parser(ParsingFinishedListener c) { 
     this.callback = c; 
    } 

    //some code 

    public void parse(String stuffToParse) { 
     //code 
     callback.onTextParsed(parsedText); 
    } 

    public interface ParsingFinishedListener { 
     public void onTextParsed(String textToVizualize); 
    } 
} 

class MyTask extends AsyncTask<Void, Void, Void> { 
    private ParsingFinishedListener callback;   
    public MyTask(ParsingFinishedListener c) { 
     this.callback = c; 
    } 

    ..doInBackground.. 

    ..onPostExecute(String result) { 
     Parser p = new Parser(callback); 
     p.parse(result); 
    } 
} 

class MyActivity extends Activity implements ParsingFinishedListener { 

    ...onCreate(...) { 
     ... 
     MyTask task = new MyTask((ParsingFinishedListener) this); 
     task.execute(); 
    } 
    //some code 

    @Override 
    public void onTextParsed(String result) { 
     //do something with the result 
    } 

} 

您在解析器定義你的聽衆,並完成解析的時候,你用它去的活動,這應該已經實現了它。

+0

感謝您的代碼!我還想問一下,如果有一種方法可以在不涉及Android庫的情況下執行此操作? – Genesis 2014-10-01 18:19:58

+0

我只添加了AsyncTask,因爲你沒有指定你如何運行你的查詢,你可以按你喜歡的方式實現它,只需將Listener以某種方式傳遞給Parser即可。 – 2014-10-02 14:32:15

+0

哦,好吧,我現在明白了!謝謝 :) – Genesis 2014-10-02 19:13:16