我用
调用活动Intent intent = new Intent(this, DetailsActivity.class);
startActivityForResult(intent, 1);
我必须按“添加”和“取消”按钮。用户输入数据并单击“添加”后,工作正常。但我不确定要添加到onClickCancel中,因为如果我只是把finish()我得到nullPointerException,因为它期望onActivityResult(int requestCode,int resultCode,Intent data)
答案 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动作,与发布任何数据无关,或者与你的发送按钮无关。