android - onActivityResult() 在 Android 上不起作用
问题描述
我正在尝试使用 onActivityResult 发送标题,我已经查看了同一任务的 google 实现,但它对我不起作用。有人可以帮忙吗?
mainActivity 中 onActivityResult 的代码。
public void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
System.out.println("There is something coming to this function" + requestCode);
if(requestCode == NEW_TITLE_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK){
Title title = new Title(data.getStringExtra(notesSection.EXTRA_REPLY));
mTitleViewModel.insert(title);
}else{
Toast.makeText(getApplicationContext(), R.string.empty_not_saved, Toast.LENGTH_LONG).show();
}
}
我的 notesSection 活动中的代码。
finishFab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// System.out.println("Button Has Been Clicked From Notes Section");
Intent replyIntent = new Intent();
if (TextUtils.isEmpty(titleEdit.getText())){
// System.out.println("Empty?");
setResult(RESULT_CANCELED, replyIntent);
}else{
// System.out.println("Sending Something Supposedly");
String title = titleEdit.getText().toString();
// System.out.println("Sending " + title);
replyIntent.putExtra(EXTRA_REPLY, title);
setResult(RESULT_OK, replyIntent);
}
finish();
// startActivity(new Intent(notesSection.this, MainActivity.class));
}
});
仅供参考:当我在 onActivityResult 函数中打印某些内容时,我的运行终端上什么也没有显示,我不知道这是为什么,但我认为由于某种原因没有达到该函数。如有必要,我将发送更多代码。谢谢。
解决方案
在您的第一个活动中尝试像这样开始第二个活动
static int NEW_TITLE_ACTIVITY_REQUEST_CODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
---
---
---
// i assume you are starting activity on some button click
// so add following line in you button on click event
startActivityForResult(new Intent(MainActivity.this,notesSection.class),NEW_TITLE_ACTIVITY_REQUEST_CODE);
}
然后在您的第一个活动中覆盖以下方法
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if (resultCode == Activity.RESULT_OK && requestCode == NEW_TITLE_ACTIVITY_REQUEST_CODE)
{
// do whatever you want
}
}
还要在点击侦听器上更新您的完成工厂
finishFab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent replyIntent = new Intent();
if (TextUtils.isEmpty(titleEdit.getText())){
setResult(RESULT_CANCELED, replyIntent);
}
else{
replyIntent.putExtra("TITLE", titleEdit.getText().toString());
setResult(RESULT_OK, replyIntent);
}
finish();
}
});
推荐阅读
- python - 是否可以在 guizero 中创建多个页面或刷新页面以显示新内容?
- c# - 如何在带有 AspNet Core Identity 的 .net core 5.0 中使用 keycloak?
- amazon-web-services - 如何通过 AWS CLI 命令在 AWS ECS 中创建取消注册/非活动任务定义的修订?
- django - 与 Jenkins、Docker 相关
- python - Docker 副本:无法计算来自发件人的缓存键/错误
- lex - 如何在 Windows 的命令行上运行/编译 lex 程序
- javascript - 当我导航到另一条路线时,如何不删除启用 PIP 的视频组件?使用 Aurelia.js
- typescript - 在 Formik 中使用 innerRef 访问 formik 状态,如错误
- nginx - 适用于 Amazon Linux 第 2 版 (Karoo) 和 nginx 的 certbot-auto (2021)
- svg - Vue Konva,动态创建阶段