Android的 - 从应用程序级的更改活动UI [英] android - changing Activity UI from application class

查看:107
本文介绍了Android的 - 从应用程序级的更改活动UI的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我为了打造的android单状物体扩展了应用程序类。

I extended the Application class in order to create singleton-like object in android.

在这个对象我都用我的服务器的HTTP工作,和所有其他的活动可以访问并调用方法,GET,POST等。

in this object I have all the HTTP work with my server, and all the other activities can access it and call methods to GET, POST etc.

code:

public class HttpManagerInstance extends Application {
    private HttpClient httpClient;
    private HttpGet get;

    @Override
    public void onCreate() {
        httpClient = new DefaultHttpClient();
        get = new HttpGet("http://10.100.102.9:8000/users/");
        super.onCreate();

    }


    public Void getUsers() throws Exception {
        new executeRequest().execute(get);
        return null;
    }

    private class executeRequest extends AsyncTask<HttpRequest, Void, Integer> {

        @Override
        protected Integer doInBackground(HttpRequest... params) {
            // TODO Auto-generated method stub
            HttpRequest request = params[0];
            HttpResponse response;
            String result="";
            try {
                response = httpClient.execute((HttpUriRequest) request);
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return responseCode;
        }

        @Override
        protected void onPostExecute(Integer result) {
            // TODO Auto-generated method stub
            switch (result) {
            case HttpStatus.SC_OK:
                // request was fine

                // Here I want to updated the GUI of the activity that called this method.
                break;
            }
        }

    }

}

这是我如何打电话从活动的方式:

HttpManagerInstance sampleApp = (HttpManagerInstance)getApplicationContext();
sampleApp.getUsers();

再次 - 我要访问调用该方法把一个请求接受信息的活动的UI

也许通过一个背景?任何想法?

Maybe pass a context? any ideas?

推荐答案

我想创建一个监听器:

public class HttpManagerInstance extends Application {
    private HttpClient httpClient;
    private HttpGet get;

    public interface ResponseListener{
      public void onSuccess(Object data);
    }


    @Override
    public void onCreate() {
        httpClient = new DefaultHttpClient();
        get = new HttpGet("http://10.100.102.9:8000/users/");
        super.onCreate();

    }


    public Void getUsers(ResponseListener listener) throws Exception {
        new executeRequest(listener).execute(get);
        return null;
    }

    private class executeRequest extends AsyncTask<HttpRequest, Void, Integer> {

        private ResponseListener mListener;

        public executeRequest(ResponseListener listener){
         this.mListener = listener;
        }

        @Override
        protected Integer doInBackground(HttpRequest... params) {
            // TODO Auto-generated method stub
            HttpRequest request = params[0];
            HttpResponse response;
            String result="";
            try {
                response = httpClient.execute((HttpUriRequest) request);
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return responseCode;
        }

        @Override
        protected void onPostExecute(Integer result) {
            // TODO Auto-generated method stub
            switch (result) {
            case HttpStatus.SC_OK:
                // request was fine

                // Here I want to updated the GUI of the activity that called this method.
                if(this.mListener != null) mListener.onSuccess(whatEverDataYouWant);
                break;
            }
        }

    }

}

然后,在你的活动:

Then, in your activity:

    HttpManagerInstance sampleApp = (HttpManagerInstance)getApplicationContext();
    sampleApp.getUsers(new ResponseListener(){
       public void onSuccess(Object data){
         //update your ui!
       }

});

这篇关于Android的 - 从应用程序级的更改活动UI的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆