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

时间:2015-01-30 04:58:04

标签: android android-intent android-activity

我用

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

我必须按“添加”和“取消”按钮。用户输入数据并单击“添加”后,工作正常。但我不确定要添加到onClickCancel中,因为如果我只是把finish()我得到nullPointerException,因为它期望onActivityResult(int requestCode,int resultCode,Intent data)

4 个答案:

答案 0 :(得分:3)

无论您在哪里完成活动,只需填写

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

并在OnActivityResult你可以做(​​第一个陈述) -

if (resultCode == RESULT_CANCELED) {
            return;
        }

答案 1 :(得分:0)

只需判断方法 onActivityResult 中的requestCode和数据,如果requestCode不匹配或数据为null,则注意

答案 2 :(得分:0)

“取消”按钮的onClick()事件可以有活动的finish()方法。

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

但是活动,您将意图发送到DetailsActivity.class,您将其称为

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

因此,您应该在同一个活动中覆盖活动的 onActivityResult()方法,并且应该处理请求代码和结果代码。情况为null或不为null,结果代码为整数。请参阅相关文档。

另一个解决方案是,如果您不期待来自DetailsActivity的任何数据,您只需调用

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

希望这有帮助。

答案 3 :(得分:0)

你可以这样:

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动作,与发布任何数据无关,或者与你的发送按钮无关。