簡體   English   中英

即使我發送了一個意圖,但通過意圖時,OnActivityResult也會為null

[英]OnActivityResult get null as the intent passed even though I sent an intent

我有兩個活動。 使用startActivityForResult(intent,request_code)從第一個調用第二個活動。 在第二個活動中,我有以下代碼:

Intent i = getIntent();
i.putExtra("data" , some data);
setResult(Activity.RESULT_OK,i);
finish();

然后,要在第一個活動中獲取數據,請使用以下代碼:

    @Override
protected void onActivityResult(int requestCode,int resultCode,Intent intent)
{
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode==this.uploadRequestCode && resultCode == Activity.RESULT_OK)
    {
        data = intent.get("data")
    }

我以這種方式開始活動:

Intent uploadIntent = new Intent(this,uploadActivity.class)
startActivityForResult(uploadIntent,this.uploadRequestCode)

問題是即使我設置了RESULT_OK,我得到的結果代碼仍然是RESULT_CANCELLED。

注意

我並不是說按下后退按鈕時的情況。

更新

我發現即使我發送了一個意圖,我在onActivityResult()中得到的意圖也為空,這就是為什么結果代碼為RESULT_CANCELLED的原因。

有人知道為什么意圖為空嗎?

也許這可以幫到你,我有一個項目

這就是我開始活動的方式

Intent intent = new Intent(FirstActivity.this, ActivityThatReturnInfo.class);
startActivityForResult(intent, 1);

這是我想返回一些值的活動

Intent returnIntent = new Intent();
returnIntent.putExtra("VAR",someInfo);
setResult(Activity.RESULT_OK,returnIntent);
finish();

這是在開始等待信息的活動上

protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    switch (requestCode)
    {
        case 1:
            if(resultCode == Activity.RESULT_OK)
            {
                String result = data.getStringExtra("VAR");
                // Code to do
            }
            break;
        default:
            IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
            if(result != null)
            {
                if(result.getContents() != null)
                {
                    // Code to do
                }
            }
            break;
    }
}

從FirstActivity啟動SecondActivity

Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 100);

從SecondActivity向FirstActivity發送數據

Intent intent= new Intent();
intent.putExtra("result",result);
setResult(RESULT_OK,intent);
finish();

在FirstActivity中獲得結果

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{
    if (requestCode == 100 && resultCode == Activity.RESULT_OK){
            String result=data.getStringExtra("result");
            Log.e("Result",result);
    }
}

編輯:將您的代碼更改為下面,然后嘗試一次。 從SecondActivity發送意圖到FirstActivity Intent i = getIntent(); to Intent intent= new Intent();

暫無
暫無

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

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