frament 与Act 通信 handle 和接口

来源:互联网 发布:怎样提高淘宝买家信誉 编辑:程序博客网 时间:2024/05/14 11:14
package com.example.map.myapplication.fragmentdemo1;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v4.app.FragmentActivity;import com.example.map.myapplication.R;/** * Created by qundui on 2017/5/26. */public class Demo extends FragmentActivity implements A.MycallBack {    final String[] rightData={"第一页内容","第二页内容","第三页内容"};    private B mb;    // 得到AFragment 的消息并处理B  Fragment 处理 执行一些更新UI 等操作//    private Handler handle=new Handler(){//        @Override//        public void handleMessage(Message msg) {//              mb.getTv().setText(rightData[msg.what]);//            super.handleMessage(msg);//        }//    };   @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.demo1);        mb= (B) getSupportFragmentManager().findFragmentById(R.id.b);    }//    public Handler getHandle() {//        return handle;//    }    @Override    public void SwichPos(int pos) {        mb.getTv().setText(rightData[pos]);    }

}

Fragment 1:

package com.example.map.myapplication.fragmentdemo1;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.support.v4.app.ListFragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.ArrayAdapter;import com.example.map.myapplication.R;/** * Created by qundui on 2017/5/26. */public class A extends ListFragment {    private Demo demo;    private Handler mhandle;    private B b;    final String[]  mdatas={"第一页","第二页","第三页"};//    final String[] rightData={"第一页内容","第二页内容","第三页内容"};    interface MycallBack {     void SwichPos(int pos);}MycallBack mcallback;    //注意衣服是才可以吧处理逻辑交给宿主handle,并拿到handle    @Override    public void onAttach(Activity activity) {//        demo= (Demo) activity;//       mhandle= demo.getHandle();        if (activity instanceof MycallBack){           mcallback= (MycallBack) activity;// 对象上转性,类似C++风格多继承,其实是Java里面实现类 control+T 查看一下viewtree 便知        }        super.onAttach(activity);    }    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        return super.onCreateView(inflater, container, savedInstanceState);    }// 此时可以拿到别的Fragment    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {       // b= (B) demo.getSupportFragmentManager().findFragmentById(R.id.b);        super.onActivityCreated(savedInstanceState);    }    @Override    public void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }    //  注意此时 listview 才创建    @Override    public void onViewCreated(View view, Bundle savedInstanceState) {        setListAdapter(new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,android.R.id.text1,mdatas));        getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {//                b.getTv().setText(rightData[position]);//                Message m=Message.obtain();//                m.what=position;//                mhandle.sendMessage(m);                mcallback.SwichPos(position);            }        });        super.onViewCreated(view, savedInstanceState);    }}
2.Fragment2:

package com.example.map.myapplication.fragmentdemo1;import android.app.Activity;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import static com.example.map.myapplication.R.id.tv;/** * Created by qundui on 2017/5/26. */public class B extends Fragment {    private TextView tv;    @Override    public void onAttach(Activity activity) {        super.onAttach(activity);    }    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {         tv=new TextView(getActivity());        return tv;    }    public TextView getTv() {        return tv;    }}