簡體   English   中英

如何使用非活動類中的onActivityResult方法獲取結果

[英]How to use onActivityResult method from a non-activity class to get the resuts

我有一個擴展CursorAdapter的類,所以我使用((Activity) context).startActivityForResult 但是如何使用onActivityResult? 非常感謝。

您可以選擇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) {
    }
}

請點擊鏈接獲取詳細信息。

在您的活動中覆蓋onActivityResult()

請參閱: http : //developer.android.com/training/basics/intents/result.html

如果您想要其他通知方式,請嘗試使用LocalBroadcastManagerBroadcastReceiver ,如果發送者和接收者都是您自己的代碼。

如果您依賴外部代碼或應用程序,則必須使用活動方式並以此為基礎進行構建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM