簡體   English   中英

OnActivityResult() 返回空數據

[英]OnActivityResult() returning null data

我知道這個問題已經被問過很多次了,我正確地遵循了所有步驟,但仍然在我的 FirstApplication 中獲得了空數據

FirstApplication 開始意圖使用 Mainactivity 從庫類獲取結果,該類使用構造函數中的活動變量初始化:

 sendIntent.putExtra("data", bundle);
    sendIntent.setType("text/plain");
    sendIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    if (sendIntent.resolveActivity(context.getPackageManager()) != null) {
        activity.startActivityForResult(sendIntent, requestCode);
    }

SecondApplication獲取意圖並進行必要的操作

        Intent intent = getIntent();

    Bundle bundle = intent.getBundleExtra("data");

    if (bundle!=null){


        type = bundle.getString("type");

        num1 = Integer.parseInt(bundle.getString("num1"));
        num2 = Integer.parseInt(bundle.getString("num2"));


        if (type.equalsIgnoreCase("add")){

            result = String.valueOf(num1+num2);


        }else {

            result = String.valueOf(num1-num2);

        }

    }

將結果發送到 FirstApplication

    Bundle bundle1 = new Bundle();

    if (bundle1!=null){

        Intent send = new Intent();

        bundle1.putString("result", result);
        send.putExtra("datasend", bundle1);
        setResult(Activity.RESULT_OK, send);
        finish();

    }

在 FirstApplication MAinActivity 中接收結果

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE) {
        if (resultCode == Activity.RESULT_OK) {
            Bundle bundle = data.getBundleExtra("datasend");
            result = bundle.getString("result");

        }
    } else {
        super.onActivityResult(requestCode, resultCode, data);
    }
}

但在這里我收到 resultCode 0 和數據空。 任何幫助將不勝感激。 謝謝你。

問題出在這一行

sendIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

通過調用Intent.FLAG_ACTIVITY_NEW_TASK您將在返回堆棧頂部設置第二個活動並取消startActivityForResult()的效果

所以應該刪除它以取回結果

暫無
暫無

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

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