![](/img/trans.png)
[英]how to get stringExtra in onActivityResult() that is passed through intent?
[英]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.