如何给 onActivityResult(int requestCode, int resultCode, Intent data) 取消输入

How to give cancel input to onActivityResult(int requestCode, int resultCode, Intent data)

我用

调用 activity
Intent intent = new Intent(this, DetailsActivity.class);
startActivityForResult(intent, 1);

我必须按 "Add" 和 "Cancel" 按钮。用户输入数据并单击 "Add" 后,它工作正常。但是我不确定要在 onClickCancel 中添加什么,因为如果我只是将 finish() 放入 nullPointerException,因为它期待 onActivityResult(int requestCode, int resultCode, Intent data)

只在方法onActivityResult中判断requestCode和data,如果requestCode不匹配或者data为null,则不做noting

"Cancel" 按钮的 onClick() 事件可以有 activity 的 finish() 方法。

@override
public void onClick(View v){
finish();
}

但是 activity,您将意图发送到 DetailsActivity.class 的地方,您将其称为

Intent intent = new Intent(this, DetailsActivity.class);
startActivityForResult(intent, 1);

因此,您应该在同一个 activity 中覆盖 activity 的 onActivityResult() 方法,并且应该处理请求代码和结果代码。案例为空或非空,结果代码将是一个整数。请参阅文档。

另一个解决方案是,如果您不希望从 DetailsActivity 获得任何数据,您可以简单地调用

Intent intent = new Intent(this, DetailsActivity.class);
startActivity(intent, 1);

希望对您有所帮助。

无论你在哪里完成你的 activity 只需输入

 Intent backIntent = new Intent();
 setResult(RESULT_CANCELED, backIntent);
 finish(); 

OnActivityResult() 中你可以做(​​第一个语句)

if (resultCode == RESULT_CANCELED) {
    return;
}

你可以有这样的东西:

public void cancelButton(View view) {

    startActivity(new Intent(MyCurrentActivity.this, TheClassIWantToReturnToActivity.class));
}

在xml.

<Button
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:onClick="cancelButton" 
    android:text="CANCEL" />

它与 OnActivityResult 是分开的,因为它是一个 onclick 动作,独立于发布任何数据或您使用发送按钮所做的任何事情。