zoukankan      html  css  js  c++  java
  • 适配器(adapter)与fragment之间、fragment与activity之间的通信问题

    一、适配器(adapter)与fragment之间通信

    通过本地广播进行通信

    步骤如下

    在adapter中代码 

    声明本地广播管理 

    private LocalBroadcastManager localBroadcastManager
    在viewholder中初始化和建立通信intent
    localBroadcastManager = LocalBroadcastManager.getInstance(context);
    final Intent intent = new Intent(MessageFragment.LOCAL_BROADCAST);
    发送广播
    intent.putExtra("readIds", readIds);   //通知fragment,让它去调用queryCity()方法
    intent.putExtra("list", (Serializable) list);
    localBroadcastManager.sendBroadcast(intent); //发送本地广播 通知fragment该刷新了

    在fragment中代码
    private IntentFilter intentFilter;
    private LocalReceiver localReceiver; //本地广播接收者
    private LocalBroadcastManager localBroadcastManager; //本地广播管理者 可以用来注册广播

    private class LocalReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

    String action = intent.getAction();
    if(!action.equals(LOCAL_BROADCAST)){
    return ;
    }
    String[] readIds =intent.getStringArrayExtra("readIds");
    List<Message> messages = (List<Message>) intent.getSerializableExtra("list");
    setList(messages,readIds);
    }
    }
    /**
    * 发送本地广播的action
    */
    public static final String LOCAL_BROADCAST = "com.xfhy.casualweather.LOCAL_BROADCAST";
    在onCreateView中初始化
    //获取LocalBroadcastManager   本地广播管理者实例
    localBroadcastManager = LocalBroadcastManager.getInstance(getContext());
    localReceiver = new LocalReceiver();
    intentFilter = new IntentFilter();
    intentFilter.addAction(LOCAL_BROADCAST); //添加action
    localBroadcastManager.registerReceiver(localReceiver,intentFilter);

    二、fragment与activity之间的通信问题

    通过回调函数

    在fragment中

    声明

    private CallBackValue callBackValue;
    /**
    * fragment与activity产生关联是 回调这个方法
    */
    @SuppressWarnings("deprecation")
    @Override
    public void onAttach(Activity activity) {
    // TODO Auto-generated method stub
    super.onAttach(activity);
    //当前fragment从activity重写了回调接口 得到接口的实例化对象
    callBackValue =(CallBackValue) getActivity();
    }
    //定义一个回调接口
    public interface CallBackValue{
    public void SendMessageValue(String strValue);
    }
    使用时调用
    callBackValue.SendMessageValue(response.getJSONObject("message_unread").getJSONObject("data").getString("unread_count"));
    在activity中
    重写方法
    @Override
    public void SendMessageValue(String strValue) {
    // TODO Auto-generated method stub
    if (strValue == "0" || strValue.isEmpty() || strValue.equals("0")) {
    count.setVisibility(View.GONE);
    } else {
    count.setText(strValue);
    count.setVisibility(View.VISIBLE);
    }

     原文参考 https://blog.csdn.net/xfhy_/article/details/61195558


  • 相关阅读:
    poj 2676 Suduku (dfs)
    poj 1562 Oil Deposits (dfs)
    poj 2907 Collecting Beepers (dfs)
    poj 1655 Balancing Act (树形dfs)
    poj 3411 Paid Roads (dfs)
    hdu 2896 病毒侵袭 (AC)
    hdu 3065 病毒侵袭持续中 (AC)
    poj 2251 Dungeon Master (bfs)
    java中debug使用
    Swing入门级小项目总结
  • 原文地址:https://www.cnblogs.com/tflike/p/9552388.html
Copyright © 2011-2022 走看看