Android fragment 向acticity傳數據

1.fragment中準備回調接口 接口中聲明傳值的回調方法
2.在fragment中定義變量 private MyListener myListener
3.重寫fragment中的onAttach()方法:listener = (MyLisener)getActivity();
4.fragment觸發事件時回傳值
5.Activity中實現回調接口 重寫回調方法獲取回傳的值並顯示

public class MyFragment extends Fragment {

    private Button btn;
    private TextView text;
    private String str;
   
	//定義回調接口
	public interface MyListener{
        public void sendValue(String value);
    }
    
 	private MyListener myListener;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v=inflater.inflate(R.layout.fragment,null);
        // 給fragment上的按鈕添加點擊事件
        text = v.findViewById(R.id.tv_value);
        btn = v.findViewById(R.id.btn_send);
		btn.setOnClickListener(new View.OnClickListener() {
		    @Override
		    public void onClick(View v) {
		        //通過調用在activity中實現的接口方法,把數據傳給Mainactivity
		       myListener.sendValue("傳值");
		    }
	});
        return v;
    }

	//activity和fragment聯繫時候調用,fragment必須依賴activty
    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
		//獲取實現接口的activity
     	myListener = (MyListener) getActivity();//或者myListener=(MainActivity) context;

    }
}

public class MainActivity extends BaseActivity implements MyListener{
//myFragment中的接口實現
    public void sendValue(String value) {
       Log.e(TAG,value);
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章