簡體   English   中英

超級OnActivityResult不調用Fragment OnActivityResult

[英]Super OnActivityResult not calling Fragment OnActivityResult

我正在為我的應用程序使用Xamarin Studio。 這里有一個與此類似的問題。 我正在以啟動相機的意圖調用StartActivityForResult 相機拍照並返回到應用程序,然后調用主活動的OnActivityResult 我的問題是,盡管調用了base.OnActivityResult ,但我的片段的OnActivityResult從未被命中。

我在這里瀏覽了SO上的解決方案,這些解決方案通常是:

1.在片段內調用base.StartActivityForResult而不是StartActivityForResult

2.呼叫base.OnActivityResult在主要活動的OnActivityResult對未處理請求代碼轉發

3.確保launchMode中的launchMode未設置為single

碼:

片段-

void AddImage(object sender, EventArgs e){

    //Preparing intent here...

    StartActivityForResult (intent, 0);
}

//no override keyword because I'm given a compiler error stating
//that there is no OnActivityResult to override
protected void OnActivityResult(int requestCode, Result resultCode, Intent data){
    //I call resultCode.GetHashCode here because I'm using SupportFragment
    base.OnActivityResult (requestCode, resultCode.GetHashCode(), data);

    if (resultCode == Result.Canceled)
        return;

    //process image...
}

主要活動 -

protected override void OnActivityResult (int requestCode, Result resultCode, Intent data)
{
    base.OnActivityResult (requestCode, resultCode, data);
    //processing data from other intents at the main activity level
}

在SupportFragment中,您應該使用

public override void OnActivityResult(int requestCode, int resultCode, Intent data){
    base.OnActivityResult (requestCode, resultCode, data);

代替

public override void OnActivityResult(int requestCode, Result resultCode, Intent data) {

注意arg resultCode的類型,以int形式覆蓋

暫無
暫無

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

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