안드로이드 학습의 다섯 가지 인터페이스 통신 방법 총결
인터페이스 통신은 바로Activity 간의 데이터 전달이다(Fragment도Activity에 속한다)
통신 방법 1: startActivity()
public void toBindActivity(Activity act, Bundle bundle) {
startActivity(act, BindActivity.class, bundle);
}
점프와 동시에 값을 전달합니다
수신:
int position = getIntent().getExtras().getInt("position");
통신 방법 2:public 만들기 방법
public UserModel getUserInfo(){
return usermodel;
}
수신:
UserModel model=new MainActivity().getUserInfo();
통신 방법 3: 콜백 인터페이스
인터페이스 생성
public interface FragmentCallBack {
ThirdModel getThirdModel();
}
실현 인터페이스
public class BindActivity extends BaseActivity implements FragmentCallBack {
@Override
public ThirdModel getThirdModel() {
return thirdModel;
}
}
수신:
private ThirdModel thirdModel;
private FragmentCallBack callBack;
@Override
protected void initData() {
thirdModel = callBack.getThirdModel();
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
callBack = (BindActivity) activity;
}
통신 방식 4: 방송 통신 실현
방송의 등록은 동태와 정태 두 종류로 나뉘는데 구체적인 등록은 소개되지 않는다.
public class DemoReceiver extends BroadcastReceiver {
private LogUtil log = new LogUtil(getClass());
@Override
public void onReceive(Context context, Intent intent) {
//
if (intent.getAction().equals("") {
Intent intents=new Intent(context, MainActivity.class);
Bundle bundle=new Bundle();
bundle.putSerializable("key","value");
intents.putExtras(bundle);
context.startActivity(intents);
}
}
}
수신:
int position = getIntent().getExtras().getInt("position");
통신 방법 5: EventBus 통신
EventBus 등록 제거는 설명에 포함되지 않습니다.
보내기:
EventBus.getDefault().post(new ClickEvent(ClickEvent.Type.MOVE_LOGIN, null, 3));
ClickEvent
public class ClickEvent {
public enum Type {}
public Type type;
public View view;
public Object data;
public ClickEvent(Type type, View view, Object data) {
this.type = type;
this.view = view;
this.data = data;
}
접수
@Override
public void onEventMainThread(final ClickEvent event) {
switch (event.type) {
case RECOMMEND_NEWS:
case LOGINOUT:
getWindow().getDecorView().post(new Runnable() {
@Override
public void run() {
adapter.selectTab((Integer) event.data);
}
});
break;
case MOVE_LOGIN:
RouteManager.getInstance().toLogin(this, (Integer) event.data);
finish();
break;
}
}
참고: EventBus 통신은 활동이 스택에 이미 존재해야 합니다. 그렇지 않으면 수신되지 않으며, EventBus는 어댑터에서 활동과 통신할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.