我可以等待两个不同的结果与 StartActivityForResult() 一样



您好,我想问一下是否可以等待 2 个不同的结果与StartActivityForResult().我试图完成以下几点:

我有一个列表视图,当我单击某个项目时,我会启动另一个活动。我有 2 个按钮。其中之一是保存列表项名称的更改,另一种是删除单击的项目。我不确定如何检测我按下了哪些按钮。

是的。REQUEST_ID的第二个参数用于告诉您正在请求表单的请求。

单击按钮 1 时,您调用

startActivityForResult(intent, REQUEST_1)

当按钮 2 单击时,您调用

startActivityForResult(intent, REQUEST_2)

在回调中,您将其作为第一个参数:

onActivityResult(requestCode: Int...)

如果请求代码 == REQUEST_1,则它来自按钮 1。

解决方案:

首先,从startActivityForResult(your_intent, 1);开始您的活动

其次,在您的下一个活动中(您有 2 个按钮(:

在保存按钮的点击侦听器中,将结果代码传递为"1",如下所示:

setResult(1);
finish();

在删除按钮的单击侦听器中,将结果代码传递为"2",如下所示:

setResult(2);
finish();

最后onActivityResult()您之前的活动/片段:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == 1) {
....
(Save Button Pressed)
....
}
else if (requestCode == 1 && resultCode == 2) {
....
(Delete Button Pressed)
....
}
}

就是这样。我自己项目的工作示例。

为了更清楚起见,我将第一个activity(带有列表的那个(称为ListActivity,并将新activity(带有按钮的那个(称为ButtonActivity

若要检测按下的按钮ButtonActivity向类添加一个实现,如下所示:

public class ButtonActivity extends AppCompatActivity implements View.OnClickListener

然后实现方法onClick(View v),像这样:

@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.your_save_button_id: {
Intent data = new Intent();
data.putExtra("item_to_save", item);
setResult(CommonStatusCodes.SUCCESS, data);
finish();
break;
}
case R.id.your_delete_button_id: {
Intent data = new Intent();
data.putExtra("item_to_delete", item);
setResult(CommonStatusCodes.SUCCESS, data);
finish();
break;
}
default: {
break;
}
}
}

在您的ListActivity

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == "request_code_for_button_activity") {
if (resultCode == CommonStatusCodes.SUCCESS) {
if (data != null) {
if (data.getStringExtra("item_to_delete") != null) {
//DELETE YOUR ITEM HERE
} else if (data.getStringExtra("item_to_save") != null) {
//SAVE YOUR ITEM HERE
}
}
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}

相关内容

  • 没有找到相关文章

最新更新