Android 接口回调
eg场景:Fragment 中数据变化Activity 跟随变化
Activity 文件
public class MainActivity extends FragmentActivity implements MainFragment.DataChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MainFragment fragment = new MainFragment();
fragment.listener = this;
FragmentManager fm = getSupportFragmentManager();
fm.beginTransaction().add(R.id.fragment_container, fragment).commit();
}
@Override
public void changeData(String data) {
Log.d("activity 收到了监听 = ",data);
}
}
Fragment文件
public class MainFragment extends Fragment {
DataChangeListener listener;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (listener != null) {
listener.changeData("fragment data change");
}
return super.onCreateView(inflater, container, savedInstanceState);
}
public interface DataChangeListener {
public void changeData(String data);
}
}
iOS 委托代理
eg场景:FoodsController 跳转到FoodsTypeController,选择分类后返回更新数据
FoodsViewController.m文件
#import "FoodsTypeViewController.h"
@interface FoodsViewController ()<FoodsTypeDelegate>
@end
- (void) getFoodsTypeId:(NSString *) id
{
NSLog(@" 选择的id = %@", id);
}
- (void) rightButtonClick:(UIButton *) sender
{
FoodsTypeViewController *foodsTypeVC = [[FoodsTypeViewController alloc] init];
foodsTypeVC.foodsTypeDelegate = self;
[self.navigationController pushViewController:foodsTypeVC animated:YES];
}
FoodsTypeViewController.h
@protocol FoodsTypeDelegate <NSObject>
@optional
- (void) getFoodsTypeId:(NSString *) id;
@end
@interface FoodsTypeViewController : UIViewController
@property (nonatomic, weak) id<FoodsTypeDelegate> foodsTypeDelegate;
@end
FoodsTypeViewController.m
[self.foodsTypeDelegate getFoodsTypeId:@"3"];
[self.navigationController popViewControllerAnimated:YES];