【问题标题】:Android/Java and addEventListenersAndroid/Java 和 addEventListeners
【发布时间】:2011-06-29 17:25:06
【问题描述】:

我有一个 Activity 类和一个 RestClient 类。使用 Javascript 或 ActionScript 我简单地在 RestClient 上定义事件侦听器,以便主类可以在发生某些事情时触发一些函数。

Flash 示例:

RestClient c = new RestCient()
c.addEventListener(Event.DATA, dataHandler);

function dataHandler(e:Event)
{
 ... do something
}

在 Android 中执行此操作的正确方法是什么?主类是Activity。

Android 示例:

public class RestClient extends MyConnector 
{
   public RestClient()
   {
      ...   
   }

   protected var onConnect()
   {
      dispatchEvent CONNECT ???
   }

   protected var onClose()
   {
      dispatchEvent CLOSE ???
   }

   ...
}

public class Main extends Activity
{
   RestClient client;

   @Override
   public void onCreate(Bundle savedInstanceState) 
   {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);

      client = new RestClient();
      client.addEventListener(CONNECT, connectHandler); ?????  
   }

   protected void connectHandler(Event e)
   {
      Log.i("Yeah!", "Connected!");
   }
}

谢谢。

【问题讨论】:

    标签: android events event-handling addeventlistener


    【解决方案1】:

    An AsyncTask 可能是您最熟悉的来自 ActionScript 的事件处理类型。您可以将 AsyncTask 子类化,然后在您的主要活动中定义它,如下所示:

    MyRestTask restTask = new MyRestTask<URL, Integer, Long>() {
     protected Long doInBackground(URL... urls) {
         // instantiate an DefaultHTTPClient and call methods on it here
     }
    
     protected void onProgressUpdate(Integer... progress) {
         // retrieve progress updates here
     }
    
     protected void onPostExecute(Long result) {
         // process the response here
     }
    }
    

    【讨论】:

    • 哈哈……真的,我的朋友……你说得对。我的问题是我不能继承它,因为 RestTask 已经从 X 扩展了。
    猜你喜欢
    • 2016-06-22
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多