一,两个Activity之间的回调 :这个用比较多,也很常见,
例1:Activity_A跳转Activity_B,Activity_B返回值
class Activity_A extends Activity{
/**A跳转B, 100为标志值**/
public void buttonOnClick(View v){
startActivityForResult(new Intent(Activity_A.this, Activity_B.class),100);
}
/**接收B回传的值**/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == -1 || data == null) {
return;
}
String date = data.getStringExtra("date");
switch (resultCode) {
case 100:
System.out.println("**********"+date );
break;
}
}}
class Activity_B extends Activity{
/**A跳转B, 100为标志值**/
Intent ret = new Intent();
ret.putExtra("date", "返回的值");
Activity_B .this.setResult(100, ret);}
二、Activity_A跳转自定义对话框Dialog_B,Dialog_B返回值,或响应事件
例2:
/**首先要建个接口**/
public interface itemClickOkCallBack {
public void itemClickOk(int type,Object o);
}
/**自定义Dialog_B **/
public class Dialog_B extends Dialog {
private Activity context;
private itemClickOkCallBack listener;
public Dialog_B(Activity context) {
super(context);
this.context = context;
}
public Dialog_B(Activity context, int theme,
itemClickOkCallBack listener) {
super(context, theme);
this.context = context;
this.listener = listener;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.okoff_dialog);
//okBut
findViewById(R.id.but_ok).setOnClickListener(new android.view.View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
listener.itemClickOk(0,"返回值");
}
});
}
}
/**Activity_A **/
class Activity_A extends Activity{
public void buttonOnClick(View v){
Dialog_Bdialog = new Dialog_B(this,
R.style.My_Dialog, new checkCallBack() {
@Override
public void itemClickOk(int type,Object o) {
//回调事件 , o为返回的事件
}
});
dialog.show();
}
class checkCallBack implements itemClickOkCallBack {
@Override
public void itemClickOk(int type, Object o) {
}
}
}
/**自定义对话框的style**/
<style name="My_Dialog" parent="@android:Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@drawable/top</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
注:·1,这种回调也常用在多线程里,如下载图片等。
2,自定义对话框传值也有多种方法,例如Handler等,广播不推荐