我有一个扩展CursorAdapter的类,因此我使用((Activity) context).startActivityForResult
。但是我如何使用onActivityResult?非常感谢。
答案 0 :(得分:1)
作为一种选择,你可以observer
模式。
public interface ActivityObserver {
void onActivityResult(int requestCode, int resultCode, Intent data);
}
public class MyActivity extends Activity {
private List<ActivityObserver> observers = new ArrayList<ActivityObserver>();
public void attach(ActivityObserver observer){
observers.add(observer);
}
public void detach(ActivityObserver observer){
observers.remove(observer);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
for (ActivityObserver observer : observers) {
observer.onActivityResult(requestCode, resultCode, data);
}
}
}
当然,您需要在适配器中实现ActivityObserver
并附加它。
尽管如此,请考虑使用Androjeta框架(由我维护)。它带有许多功能,包括Observer
,你可以在你的情况下使用它们:
public class OnActivityResultEvent {
int requestCode;
int resultCode;
Intent data;
public OnActivityResultEvent(int requestCode, int resultCode, Intent data) {
this.requestCode = requestCode;
this.resultCode = resultCode;
this.data = data;
}
}
public class MyActivity extends Activity {
@Subject
Observers<OnActivityResultEvent> observers;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
observers.notify(new OnActivityResultEvent(requestCode, resultCode, data));
}
}
public class MyAdapter extends ArrayAdapter{
@Observe(MyActivity.class)
void onActivityResultEvent(OnActivityResultEvent event) {
}
}
请点击链接了解详情。
答案 1 :(得分:0)
在您的活动中覆盖onActivityResult()
。
请参阅:http://developer.android.com/training/basics/intents/result.html
如果您需要其他通知方式,请尝试LocalBroadcastManager和BroadcastReceiver,如果发件人和收件人都是您自己的代码。
如果您依赖外部代码或应用程序,则必须使用activity-way并围绕它进行构建。