我正在开发一个包含两个活动的问答应用程序:一个QuizActivity
显示问题
列表,另一个QuestionActivity
显示问题的详细信息(提示、选项等)。在QuizActivity
中,我使用StartActivityForResult(Intent,int)
方法打开QuestionActivity
,如下所示:
Intent questionIntent = new Intent(QuizActivity.this, QuestionActivity.class);
questionIntent.putExtra("currentQuestion", currentQuestion);
startActivityForResult(questionIntent, REQUEST_CODE_SELECTED_OPTION);
其中request_code_selected_option
是设置为1的常量。
在QuestionActivity
完成后,它应该返回所选选项的索引(假设它是一个多项选择题),因此我重写了onpause()
回调:
@Override
public void onPause() {
super.onPause();
Intent returnIntent = new Intent(QuestionActivity.this, QuizActivity.class);
if (curQuestion.selected()) {
returnIntent.putExtra("Result Code", RESULT_OK);
setResult(Activity.RESULT_OK, returnIntent);
Log.d("QuestionActivity", "Returned with " + Activity.RESULT_OK);
} else {
returnIntent.putExtra("Result Code", RESULT_CANCELED);
setResult(Activity.RESULT_CANCELED, returnIntent);
Log.d("QuestionActivity", "Returned with " + Activity.RESULT_CANCELED);
}
}
我还在我的QuizActivity
中实现了OnActivityResult(int,int,Intent)
回调:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d("QuizActivity", "Received result code: " + resultCode);
Log.d("QuizActivity", "Result code from intent: " + data.getIntExtra("Result Code", 100));
if (requestCode == REQUEST_CODE_SELECTED_OPTION) {
if(resultCode == Activity.RESULT_OK){
Log.d("QuizActivity", "Got RESULT_OK");
}
if (resultCode == Activity.RESULT_CANCELED) {
// do nothing
}
}
}
但是,当我运行应用程序时,输入QuestionActivity
,选择一个选项,然后回击,从日志中我看到在QuestionActivity
中,结果代码被正确地设置为-1:
D/QuestionActivity: Returned with -1
D/QuizActivity: Received result code: 0
但在OnActivityResult(int,int,Intent)
方法中,结果代码为0。此外,我还尝试将int
放入传递回来的意图中,但在quizactivity
中,接收到的意图是null
。我真的很困惑。我用错方法了吗?
我想出来了。根据这篇文章和Android文档,必须在活动完成之前(即在调用onpause()
、onstop()
或ondestroy
之前)调用setResult(int,Intent)
方法。我尝试将它放入onBackPressed()
中,但一开始没有工作,因为我在第一行调用了super.onBackPressed()
。最后,这起作用了:
@Override
public void onBackPressed() {
Intent returnIntent = new Intent(QuestionActivity.this, QuizActivity.class);
if (curQuestion.selected()) {
returnIntent.putExtra("Result Code", RESULT_OK);
setResult(Activity.RESULT_OK, returnIntent);
Log.d("QuestionActivity", "Returned with " + Activity.RESULT_OK);
} else {
returnIntent.putExtra("Result Code", RESULT_CANCELED);
setResult(Activity.RESULT_CANCELED, returnIntent);
Log.d("QuestionActivity", "Returned with " + Activity.RESULT_CANCELED);
}
super.onBackPressed();
}
我有一个选择一个图像的意图(我在一个片段中这样称呼它): 在我的活动中: 输出:OnActivityResult:请求代码:66084 OnActivityResult:Result:-1成功=true 正如您所看到的,结果是成功的,但请求代码发生了更改。所以我无法查证是什么请求。
我正试图拍摄一张照片并将照片发送到服务器,但目前我没有进入onActivityResult,也不知道发生了什么 代码如下: 我可以预览相机,但在android照片上的点击没有击中activiyt结果上的log.d,有什么提示吗? logcat:
我是一个新的android和有以下查询。 我正在建立一个应用程序,其中包含两个活动第一和第二,发送消息给对方。“第一个”向“第二个”发送消息,然后“第二个”启动,显示接收到的消息,并向“第一个”发回消息。最后,首先显示收到的消息。 在第一个活动中,我必须使用startActivityForResult启动第二个活动,因为我需要返回响应。 谢了! PS-我已经尝试删除语句-if(resultCode
这是我的onActivityResult方法:-
我想在共享托管服务器中安装php依赖项,但是作曲家说我的php版本是(对我的依赖项来说太旧了),这是真的,所以我用一个叫做"MultiPHP管理器”。好吧,直到我重试运行,作曲家一直说我的php版本是。 然后我在一个虚拟页面中检查了,它说我的版本是。我还运行了,结果显示我的版本是。 我试过了 重新加载 运行和但它说已禁用,但我使用名为“MultiHP INI编辑器”的cpanel工具启用了它,说已
我的密码应类似于: “密码应包含至少一个大写字母,一个小写字母,一个数字和一个特殊字符,长度至少为八个字符” 我使用的模式是: