gpt4 book ai didi

Android:onActivityResult 数据始终为空

转载 作者:太空狗 更新时间:2023-10-29 16:17:44 31 4
gpt4 key购买 nike

我已经在 StackOverflow 和 Google 上阅读过许多类似的情况,但没有一个对我的情况有帮助。我有两个 Activity ,A 和 B。A 调用 B 的 Activity 结果:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.mnuMainSettings:
startActivity(new Intent(ActivityMain.this, ActivitySettings.class));
break;
case R.id.mnuMainHelp:
startActivity(new Intent(ActivityMain.this, ActivityHelp.class));
break;
case R.id.mnuMainEULA:
Intent intent = new Intent(ActivityMain.this, ActivityDisclaimer.class);
startActivityForResult(intent, 1);
break;
}
return true;
}

Activity B:

public class ActivityDisclaimer extends Activity
{

private WebView webView;

public static final int ACTIVITY_RESULT_DISCLAIMER = 1;
public static final String ACTIVITY_RESULT = "result";
public static final int ACTIVITY_RESULT_OK = 1;
public static final int ACTIVITY_RESULT_CANCELED = 2;


public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.disclaimer);

webView = (WebView) findViewById(R.id.WebViewDisclaimer);
webView.loadUrl("file:///android_asset/disclaimer.html");

}

public void onClickDisclaimerBtnAccept(View view) {
Prefs prefs = new Prefs(this);
prefs.setAcceptDisclaimer(true);
prefs.commit();

Intent returnIntent = new Intent();
returnIntent.putExtra("result",true);
setResult(Activity.RESULT_OK, returnIntent);
finish();
}

public void onClickDisclaimerBtnDecline(View view) {
Prefs prefs = new Prefs(this);
prefs.setAcceptDisclaimer(false);
prefs.commit();

Intent returnIntent = new Intent();
returnIntent.putExtra("result",false);
setResult(Activity.RESULT_OK, returnIntent);
finish();
}

}

但是,我的onActivityResult方法,intent返回的数据总是NULL。

protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
// For response from disclaimer activity
if (requestCode == 1) {

if (resultCode == Activity.RESULT_OK){
if (null != intent) {
Boolean accepted = intent.getBooleanExtra("result", false);
Log.d(TAG, "Boolean Data: " + accepted.toString());
if (!accepted) finish();
} else { Log.d(TAG, "RESULT OK, DATA NULL"); }
}
if (resultCode == Activity.RESULT_CANCELED){
if (null != intent) {
Boolean accepted = intent.getBooleanExtra("result", false);
Log.d(TAG, "Boolean Data: " + accepted.toString());
finish();
} else { Log.d(TAG, "RESULT CANCELED, DATA NULL"); }
}

}
}//onActivityResult

“结果已取消,数据为空”是我得到的全部信息。我在这里错过了什么吗?也许我盯着这段代码看得太久了!

编辑:为了更具体地说明我的问题,为什么我得到一个空值?

最佳答案

热狗!回答我自己的问题,上面的代码很好。我终于在这里找到了答案:fragments startActivityForResult always return resultCode 0 and intent null on callback onActivityResult

总而言之,我的 manifest.xml 中有 android: launchMode="singleInstance"。我删除了这一行,现在一切正常!

真松了一口气!

关于Android:onActivityResult 数据始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22702805/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com