startactivityforresult我们已经很熟悉了,带返回值的跳转,今天我介绍一下接口回调,这个也是一种带返回值跳转,实现界面之间的交互,看startactivityforresult
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivityForResult(intent,mRequest_code);
@Override
//dispaly the message received from intent
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
String value = String.valueOf(resultCode);
String dispaly = data.getStringExtra("message");
Log.e(TAG, value);
if (resultCode == mRequest_code) {
mSetText.setText(dispaly);
} else {
Toast.makeText(MainActivity.this, "Request code wrong", Toast.LENGTH_SHORT).show();
}
}
这是第一个界面中的代码, mSendMsg.setOnClickListener(new View.OnClickListener() {
@Override
//send data to the main Activity
public void onClick(View v) {
String message = mMessage.getText().toString();
Intent intent = new Intent();
intent.putExtra("message",message);
setResult(5,intent);
finish();
}
});
这是跳转之后的界面。传回值进行数据的传递。
而我们用接口回调的时候是这样处理的
public static OnCityChangeCallBack OnCityChangeCallBack;
public interface OnCityChangeCallBack {
void onCityChange(String area);
void onCityChange2(String area2);
}
mGetData2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
OnCityChangeCallBack = new OnCityChangeCallBack() {
@Override
public void onCityChange(String area) {
mSetText2.setText(area);
// Log.d(area, "adskljjjjjjjjjjjjjjjjjjf");
}
@Override
public void onCityChange2(String area2) {
/* mSetText2.setText(area2);
Log.d(area2, "adskljjjjjjjjjjjjjjjjjjf");*/
}
};
}
});
在第二个界面中这么处理接口回调
mSendMsg2.setOnClickListener(new View.OnClickListener() {
@Override
//send data to the main Activity
public void onClick(View v) {
String message = mMessage2.getText().toString();
MainActivity.OnCityChangeCallBack.onCityChange(message);
finish();
}
});
我个人根据还是startactivityforresult更加的方便一些,这个毕竟是Java的一种思想还是很有用的。
Demo地址:
https://github.com/yuanchongzhang/startactivity_CallBack_event_demo-master