广播收到信息传到activity更新fragment

来源:互联网 发布:esp8266与单片机连接 编辑:程序博客网 时间:2024/04/30 18:55

广播与activity的交互可以通过接口回调的方式或者handler

/*********************************************************activity**********************************************/ 
protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        FragmentManager fm = getFragmentManager();        FragmentTransaction ft = fm.beginTransaction();        fragment1 = new Fragment1();        ft.add(R.id.f1, fragment1);        ft.commit();        mb = new MyBroadCast();        IntentFilter inf = new IntentFilter("com.sharetronic.test.MY_BROADCAST");        registerReceiver(mb, inf);        mb.setBRInteractionListener(this);        Intent intent = new Intent("com.sharetronic.test.MY_BROADCAST");        sendBroadcast(intent);    }    @Override    public void setText(String text) {        if (text!=null){            Toast.makeText(MainActivity.this, "11111111111111", Toast.LENGTH_SHORT).show();//            oo.setmesg(text);            mhandler.obtainMessage(0x01,text).sendToTarget();        }    }    public void setHandler(Handler handler){        mhandler =handler;    }
/*****************************************************broadcast*************************************/
public void onReceive(Context context, Intent intent) {    Toast.makeText(context, "received in MyBroadcastReceiver", Toast.LENGTH_SHORT).show();    brInteraction.setText("received in MyBroadcastReceiver");}public  interface Brecive{    public void setText(String text);}public void setBRInteractionListener(Brecive brInteraction) {    this.brInteraction = brInteraction;}
/************************************************fragment**********************************************/
 @Override    public void onAttach(Activity activity) {        super.onAttach(activity);        mactivity = (MainActivity)activity;        mactivity.setHandler(mhandler);    }    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.layout2,null);         tv = (TextView) view.findViewById(R.id.tv);        return view;    }    private Handler mhandler = new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            switch (msg.what){                case 0x01:                    String string = (String) msg.obj;                    Log.d("TAG",string);                    tv.setText(string);//                    Toast.makeText(activity, "11111111111111", Toast.LENGTH_SHORT).show();                    break;            }        }    };

0 0
原创粉丝点击