2 qq863017854 QQ863017854 于 2016.01.22 16:12 提问

Android 中有什么方法能将handler得出的参数传递到initviews()中
 try {
                JSONObject  object = new JSONObject(jsonData);
                String status = object.getString("status");
                System.out.print(status);
                String postsstr = object.getString("posts");
                JSONArray ports = new JSONArray(postsstr);

                for(int i = 0;i<ports.length();i++){
                    port = ports.getJSONObject(i);

                    id = port.getString("id");
                    title = port.getString("title");                
                    custom_fields = port.getString("custom_fields");
//                  System.out.print(custom_fields);
                    picJson = new JSONObject(custom_fields);
                    if(picJson.has("slider_pic") == true){
                        slider_pic_URL=picJson.getString("slider_pic");
                        System.out.println("图片链接"+slider_pic_URL);
                        picList = new JSONArray(slider_pic_URL);
                            for (int j =0; j<picList.length(); j++) {
                            slider_pic_URL = picList.getString(j);
                            System.out.println(slider_pic_URL);} 

想把这里的slider_pic_URL 传递到initviews()中

    private  void initViews()  {

              llAdvertiseBoard = (LinearLayout) this.findViewById(R.id.llAdvertiseBoard);
            final JSONArray advertiseArray = new JSONArray();
              class receiver extends BroadcastReceiver{

            @Override
            public void onReceive(Context context, Intent intent) {
                // TODO 自动生成的方法存根

                String TPRUL =intent.getStringExtra("tpv");
                System.out.println(TPRUL);
                advertiseArray.put(TPRUL);
            }
            }

    llAdvertiseBoard.addView(new Advertisements(this, true, inflater, 3000).initView(advertiseArray));
//          try {
//              JSONObject head_img0 = new JSONObject();
//              head_img0.put("head_img","http://www.zjhaining.com/uploads/2015/10/byf1118.jpg");
//      
//          
//              advertiseArray.put(head_img0);
//          
//          
//          } catch (JSONException e) {
//              // TODO Auto-generated catch block
//              e.printStackTrace();
//          }

            }

在initviews中创建了一个json数组 想把handler中解析出的链接传递给initviews中的
json数组中 从而可以加载出链接 急 求解答 我试了用intent 不行

3个回答

Theresa_zxx
Theresa_zxx   2016.01.22 16:23
已采纳

用这个:存放用键值对形式:HealthMap.put("key", 要传递的值);,用的时候直接用HealthMap.get("key");就可以了

public class HealthMap {

    private static Map map = new ConcurrentHashMap();

    /**
     * 传值
     * @param key
     * @param obj
     */
    public static void put(String key, Object obj) {
        map.put(key, obj);
    }
    /**
     * 取值  默认删除内存引用
     * @param key
     * @return
     */
    public static Object get(String key) {
        return map.remove(key);
    }

    /**
     * 取值   自定义是否删除内存引用
     * @param key
     * @param isDelete
     * @return
     */
    public static Object get(String key, boolean isDelete) {
        if (isDelete) {
            return get(key);
        } else {
            return map.get(key);
        }
    }

} 
Theresa_zxx
Theresa_zxx 回复QQ863017854: 那就是你存的是空值啊,你debug一步步看看
2 年多之前 回复
Theresa_zxx
Theresa_zxx 那就是你存的是空置啊,你debug一步步看看
2 年多之前 回复
QQ863017854
QQ863017854 回复ProXin: 为什么 我用不了这个方法 取出来输出每次都是空值
2 年多之前 回复
QQ863017854
QQ863017854 回复ProXin: 额 好吧 那我在找找错误 谢谢
2 年多之前 回复
Theresa_zxx
Theresa_zxx 不管什么类型都可以传,因为是Object。和静态那些没关系
2 年多之前 回复
QQ863017854
QQ863017854 有些类型不改成静态会报错 所以我改成了静态 这会有影响吗? 现在这个值还是没有传递过去貌似 额·····
2 年多之前 回复
Theresa_zxx
Theresa_zxx 恩,我都是用这个方法
2 年多之前 回复
QQ863017854
QQ863017854 好的 谢谢 我试试
2 年多之前 回复
QQ863017854
QQ863017854   2016.01.22 16:17

求大侠指点 !!!在线等 急 !!

QQ863017854
QQ863017854 求大神指点
2 年多之前 回复
QQ863017854
QQ863017854   2016.01.22 16:46

改成了这样

 public static class HealthMap {

        private static  Map map = new ConcurrentHashMap();

        /**
         * 传值
         * @param key
         * @param obj
         */
        public static void put(String key, Object obj) {
            map.put(key, obj);
        }
        /**
         * 取值  默认删除内存引用
         * @param key
         * @return
         */
        public static Object get(String key) {
            return map.remove(key);
        }

        /**
         * 取值   自定义是否删除内存引用
         * @param key
         * @param isDelete
         * @return
         */
        public Object get(String key, boolean isDelete) {
            if (isDelete) {
                return get(key);
            } else {
                return map.get(key);
            }
        }

    }   
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
android handler runnable使用实例(关键是内部run中停止)
android handler runnable使用实例(关键是内部run中停止)
js访问handler中任意方法
js访问handler中任意方法; 访问一般处理程序;
使用Handler.post()对线程进行管理,实现同步
使用Handler.post()对线程进行管理,实现同步。这里使用post()将多个线程提交到Handler的MessageQueue里面,这样线程就会顺序执行,这样任务所操作的对象在同一时间里就不会有多个线程同时操作了,也就实现了同步操作了。同时注意,队列是同步操作的一个重要手段。
用handler在两个activity之间传递数据
资源包括如何在一个activity A里激活另一个activity B。 然后在两个activity之间用handler传输数据。在activity A里定义全局变量handler,用sendMessage来发数据,在handler里数据以消息队列的方式发送。
Android handler message奇怪用法详解
android的多线程消息处理机制核心成员handler,基本用法很简单,相关资料也很多。本例子给大家带来handler的奇葩用法,与大家一起分享。
利用Handler在线程之间传递数据
这个demo介绍了通过Handler在线程之间传递消息,demo中一个三个线程,主线程,发送消息的分线程,接收消息的分线程。发送消息的分线程会通知主线程更改标签文字,同时会通知接收消息的分线程更改进度条的进度。
Android Message
Android中的Handler的消息机制
android Handler
android中Handler的使用,Handler原理和代码的呈现,易懂!
android 定时器的三种方法
在android中,经常用到的定时器主要有以下几种实现: 一、采用Handler与线程的sleep(long )方法 二、采用Handler的postDelayed(Runnable, long) 方法 三、采用Handler与timer及TimerTask结合的方法。 三种方法都有示例代码。
android 中定时器的3个实现方法(均测试通过)
android 中定时器的3个实现方法(均测试通过) 一、采用Handler与线程的sleep(long)方法 二、采用Handler的postDelayed(Runnable, long)方法 三、采用Handler与timer及TimerTask结合的方法