学习笔记 ——Activity和Fragment之间的通信(用接口回调)
写接口回调这回事,每次都会忘记怎么写然后又要重新百度,整理是对自己的一个提升
Activity中触发,Fragment中响应
Activity写接口和触发
private OnClickActivityListener mOnClickActivityListener;
/**
*接口定义
**/
public interface OnClickActivityListener {
void onClickActivity();
}
/**
-
绑定接口
-
@param
*/
@Override
public void onAttachFragment(Fragment fragment) {
try {
mOnClickActivityListener = (OnClickActivityListener) fragment;
} catch (Exception e) {}
super.onAttachFragment(fragment);
}
//触发
btnActivity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mOnClickActivityListener!=null){
mOnClickActivityListener.onClickActivity();
}
}
});
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
Fragment中接口实现
public class InterfaceBackFragment extends Fragment implements InterfaceBackActivity.OnClickActivityListener {
@Override public void onClickActivity() { btnFragment.setText("Activity中的按钮被点击"); }
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
Fragment中触发,Activity中响应
Fragment中写接口和触发
private OnFragmentInteractionListener mListener;
/**
*接口定义
**/
public interface OnFragmentInteractionListener {
void onFragmentInteraction();
}
/**
*绑定
**/
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof OnFragmentInteractionListener) {
mListener = (OnFragmentInteractionListener) context;
} else {
throw new RuntimeException(context.toString()
+ " must implement OnFragmentInteractionListener");
}
}
//触发
btnFragment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mListener != null) {
mListener.onFragmentInteraction();
}
}
});
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
Activity中接口实现
public class InterfaceBackActivity extends AppCompatActivity implements InterfaceBaceFragment.OnFragmentInteractionListener{
@Override
public void onFragmentInteraction() {
Toast.makeText(getApplicationContext(), "点击了Fragment中的控件", Toast.LENGTH_SHORT).show();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
Activity中触发,Adapter中响应
Adapter接口定义和触发
/**
*接口定义
**/
public interface OnChildItemClickListener {
void onItemClick(int pos);
}
/**
*Adapter中的构造函数传入listener
**/
public InterfaceBackAdapter(ArrayList<String> mList, OnChildItemClickListener listener) {
this.mList = mList;
mListener = listener;
}
//触发
holder.mTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mListener.onItemClick(position);
}
});
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
Activity中实现
private InterfaceBackAdapter.OnChildItemClickListener mListener;
private InterfaceBackAdapter mInterfaceBackAdapter;
mInterfaceBackAdapter = new InterfaceBackAdapter(mList, mListener);
mListener = new InterfaceBackAdapter.OnChildItemClickListener() {
@Override
public void onItemClick(int pos) {
Toast.makeText(getApplicationContext(), “我点击了第” + pos + “项”, Toast.LENGTH_SHORT).show();
}
};
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
总结
套路都有了,多写写就会了哇,QAQ
</div>