我正在使用电话从我的应用程序中的主要活动启动活动startActivityForResult(intent, ACTIVITY_TYPE),它们都在工作但只有一个.
这个,当被调用时,根据需要启动活动,但在日志中我可以看到它onActivityResult()立即被触发.活动显示但RESULT_CANCELED立即返回onActivityResult().
然后,我与活动互动,按下一个按钮,调用finish(),并且onActivityResult()不叫这个时候(因为很明显的结果已经返回).
这对任何人都有意义吗?以前有人见过这种行为吗?
我按下BACK按钮后尝试setResult.我打电话给onDestroy
Intent data = new Intent();
setResult(RESULT_OK, data)
Run Code Online (Sandbox Code Playgroud)
但是当涉及到
onActivityResult(int requestCode, int resultCode, Intent data)
Run Code Online (Sandbox Code Playgroud)
resultCode为0(RESULT_CANCELED),数据为"null".
那么,如何通过BACK按钮终止活动传递结果?
我从我的工人活动开始Activity(后代PreferenceActivity)如下:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1458)
loadInfo();
}
void showSettingsDialog()
{
startActivityForResult(new Intent().setClass(this, MyConfigure.class), 1458);
}
Run Code Online (Sandbox Code Playgroud)
MyConfigureclass没有任何setResult()电话.实际上,MyConfigure除了OnCreate()使用加载首选项之外,类没有任何代码addPreferencesFromResource.
如今onActivityResult被称为具有requestCode的1458过早,之后MyConfigure活动运行.测试1.6和2.1仿真器以及2.1设备.是否有人打电话到setResult()某处PreferenceActivity?或者如何解释这个过早的电话呢?
这已经杀了我两天了.我有一个主要的活动A,它调用第二个活动B.活动B只是向用户显示一个列表视图.当我按下列表视图中的项目时,我希望将几个字符串传递回主要活动A,然后Activiy B将完成.
问题是我总是得到一个0的结果代码,数据包是null.我真的不明白为什么会这样.
这是我的代码.
开始活动B获得结果;
Test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(recipeActivity.this, BrowseLoadRecipes.class);
startActivityForResult(i, RECIPE_CHOOSER);
}
});
Run Code Online (Sandbox Code Playgroud)
这将启动第二个活动罚款.活动B填充列表视图,当我单击一个项目时,我正在尝试将一些数据发送回调用活动A.
目前任何文字,所以我在活动B中使用了以下内容;
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
Bundle bundle = new Bundle();
bundle.putString("TEXT", "Please work... pleeeeaasee");
Intent mIntent = new Intent();
mIntent.putExtras(bundle);
setResult(RESULT_OK, mIntent);
finish();
}
});
Run Code Online (Sandbox Code Playgroud)
在调用活动中,我有以下内容听取如下返回;
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
switch(requestCode) {
//TODO
case RECIPE_CHOOSER:
Toast.makeText(getApplicationContext(), "In recipe return", …Run Code Online (Sandbox Code Playgroud) 我有一个简单的表单,用户可以从列表中添加,编辑和删除人员.当用户选择编辑某个人时,它会执行startActivityForResult,以便在编辑完成后进行相应的更改并刷新列表.如果用户从编辑屏幕单击后退按钮,则会出现强制关闭错误.
我认为这与系统期望结果有关,而且我没有正确地捕获它.我如何捕获此错误?
这是当前的onActivityResult代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
Bundle extras = intent.getExtras();
switch(requestCode) {
case ACTIVITY_CREATE:
String person = extras.getString("person");
mDbHelper.addPerson(person);
fillData();
break;
case ACTIVITY_EDIT:
Long rowId = extras.getLong("_id");
if (rowId != null) {
String editPerson = extras.getString("person");
mDbHelper.updatePerson(rowId, editPerson);
}
fillData();
break;
}
}
Run Code Online (Sandbox Code Playgroud)
感谢您的任何帮助.
我开始打算从图库中选择一张图片,但意图始终返回结果代码RESULT_CANCELED.我已经尝试了很多不同的代码但没有任何帮助让我想到也许我错过了一些东西,比如把东西放在Android清单中的活动中?
我的代码:
// The Intent
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 0);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK){
Uri targetUri = data.getData();
Bitmap bitmap;
try {
bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(targetUri));
profileImage.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
会很感激一些帮助;)
我开发了一个Android应用程序,它提示日历应用程序编辑事件.
我startActivityForResult()用来打开日历.编辑并保存事件后, resultCode内部始终为0 onActivityResult().
我看到许多与"onActivityResult resultCode总是返回0"相关的答案.这是因为没有使用setResult()和finish()第二个活动.
但就我而言,我正在调用Android日历应用程序(不是自定义活动).
提示Android日历的代码:
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
//set the event details
startActivityForResult(intent,1);
Run Code Online (Sandbox Code Playgroud)
在保存或取消日历时触发
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//resultCode always returns 0.
switch(requestCode) {
case 1:
if (resultCode == Activity.RESULT_OK)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
无论我在日历应用程序中单击"保存"还是"取消",resultCode总是给出0.
另外我需要从日历intent中获取数据.但是onActivityResult中的intent"data"也返回null.
有谁可以解释为什么会发生?有没有办法知道用户是否点击"保存"或"取消"?
在我的主要活动中,我有:
Intent settings_intent = new Intent(this, SettingsActivity.class);
settings_intent.putExtra("SomeID", some_int);
startActivityForResult(settings_intent, 1);
Run Code Online (Sandbox Code Playgroud)
然后,在我的SettingsActivity中,我有:
@Override
public void onBackPressed() {
super.onBackPressed();
// pass back settings:
Intent data = new Intent();
data.putExtra("SomeThing", some_number);
setResult(200, data);
finish();
}
Run Code Online (Sandbox Code Playgroud)
最后,我在主要活动中覆盖了以下内容:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
makeToast("called");
super.onActivityResult(requestCode, resultCode, data);
}
Run Code Online (Sandbox Code Playgroud)
然而,一旦我的"设置"活动开始,而不是在完成时,"被叫"的吐司就会发生.我现在已经花了很长时间.任何帮助表示赞赏.谢谢.