Fragment用handler向Activity发送消息并调用Activity的Handler.Callback

原创 2016年06月01日 10:23:22

Fragment01中布局一个按钮。点击改按钮向Activity发送消息:隐藏Fragment01,显示Fragment02.


public class MainActivity extends AppCompatActivity implements Handler.Callback{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.add(R.id.fragment01,new Fragment01(),"currentFragment");
        ft.commit();
    }

    @Override
    public boolean handleMessage(Message msg) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction ft = fragmentManager.beginTransaction();
        if (msg.what==1){
            ft.hide(fragmentManager.findFragmentByTag("currentFragment"));
            ft.add(R.id.fragment01,new Fragment02());
            ft.commit();
        }
        return false;
    }
}

public class Fragment01 extends Fragment {
    Handler.Callback callback;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment,container,false);
    }

    //获取Fragment依附的activity
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        this.callback= (Handler.Callback) activity;
    }

    @Override
    public void onStart() {
        super.onStart();
        Fragment fragment = getFragmentManager().findFragmentById(R.id.fragment01);
        View view = fragment.getView();
        Button button = (Button) view.findViewById(R.id.begin);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Handler handler = new Handler(callback);
                Message message = Message.obtain();
                message.what=1;
                handler.sendMessage(message);
            }
        });
    }
}

public class Fragment02 extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment02,container,false);
    }
}


Activity向Fragment里通过handler传消息

Activity部分:public Handler mHandler;******************************Message msg=new Message(); msg.obj=...
  • sinat_15197693
  • sinat_15197693
  • 2016年03月11日 15:50
  • 1576

详解Fragment跟Activity之间的通信 利用handler fragment和activity双向发送消息

不会用handler。找了几个文章学习大多数都是写的activity向fragment发送消息的例子,终于找到一个fragment向activity发送消息的,粘过来学习一下。 原文:http://b...
  • tiramisu_ljh
  • tiramisu_ljh
  • 2017年03月28日 21:58
  • 1805

android Activity和fragment通信之activity向Fragment发送数据

在activity中部分代码如下: public void onClick(View view) { String text = editText.getText().toString(...
  • ITzhongzi
  • ITzhongzi
  • 2016年07月04日 15:52
  • 451

深入分析:Fragment与Activity交互的几种方式(一,使用Handler)

这里我不再详细介绍那写比较chang gui
  • huangyabin001
  • huangyabin001
  • 2014年06月27日 12:26
  • 42006

Fragment之间通过Activity相互传值和调用的2个方式

方法一、AFragment提供接口回调调用Aty的方法,Aty再调用BFragment的方法来实现 1。A中 private void frag2aty2frag(int position...
  • RichieZhu
  • RichieZhu
  • 2016年03月31日 11:29
  • 1539

Activity和Service之间通过handler传递数据

在写音乐播放器的时候用到了这个东西,相当于Activity中把mHandler用Messenger这个信封包裹着传递到了到了Service。Service拿到这个信封,信封里面装着mHandler,告...
  • stulcc
  • stulcc
  • 2016年03月03日 12:02
  • 4849

通过回调,Fragment向Activity传递信息

可以定义一个接口,然后在Acitivity中实现该接口,在Fragement中通过回调,将信息发送至Acitivity中 MainActivity.java: interface CallBack...
  • yzr1183739890
  • yzr1183739890
  • 2015年09月12日 11:17
  • 787

Fragment与Activity交互--Handler方式

Fragment与Activity交互有很多种实现方式。其中一种常用方法是通过Handler消息处理实现。那么在谁的类中实现Handler呢?规则很简单: 谁想被控制,就在谁的类中实现Handler...
  • ucxiii
  • ucxiii
  • 2016年08月02日 01:10
  • 1007

使用Handler实现Activity和Service之间的交互

在开发应用的时候,我们有时候需要Service来处理后台任务。同时需要两者之间的实时交互,比如说下载的时候我们需要实时地更新Notification的下载进度。我们可以通过BroadcastRecei...
  • bfboys
  • bfboys
  • 2016年09月18日 21:15
  • 1096

Activity与Fragment通过Handler交互

自去年七月份以后,就没有再动过笔了。为这段长达半年多的懈怠感到羞愧。唉,言归正传,上代码吧。 正常activity与fragment的交互,如果有跳转的话,就是直接用intent和bundle来进行...
  • as4399
  • as4399
  • 2017年01月31日 12:53
  • 1856
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Fragment用handler向Activity发送消息并调用Activity的Handler.Callback
举报原因:
原因补充:

(最多只允许输入30个字)