【发布时间】:2017-02-03 20:18:47
【问题描述】:
我的 onActivityResult 有问题,无论我在做什么,我都无法正确获取 resultCode。
我知道有类似的问题,但最后他们没有帮助我,我无法解决它
MainActivity: 方法将打开新的 Activity Popup.class
public void openShopView(){
Intent intent = new Intent(this, Popup.class);
Bundle b = new Bundle();
b.putString("which", "ShopMain");
intent.putExtras(b);
startActivityForResult(intent, 1);
}
Second Activity: 方法将打开另一个 ActivityPopup.class,只是布局不同
shop_c1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getIntent());
Bundle b = new Bundle();
b.putString("which", "ShopBuildings");
intent.putExtras(b);
startActivity(intent);
finish();
}
});
第三个活动:并且有方法应该设置结果并关闭活动
building2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.i("LOG_NEW: ", "" + getCurrentBuildingTable(1) + ", " + checkSlotTable(1));
if(getCurrentBuildingTable(1) && checkSlotTable(1) == -1) {
Intent returnIntent = getIntent();
returnIntent.putExtra("result", 1);
setResult(RESULT_OK, returnIntent);
finish();
}else if (checkSlotTable(1) == -1){
Log.i("LOG_NEW: ", "Building already exist");
}
else{
Log.i("LOG_NEW: ", "Not enough resources");
}
}
});
最后有来自 MainActivity 的 onActivityResult()
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.i("LOG_RES: ", "Checking.. " + requestCode + ", " + resultCode);
if (requestCode == 1) {
if(resultCode == RESULT_OK){
String result = data.getStringExtra("result");
Log.i("LOG_RES: ", result);
}
}
}
无论我在做什么,我都无法启动 if(resultCode == RESULT_OK) 循环,并且 resultCode 始终为 0..
感谢您的帮助
【问题讨论】:
-
setResult必须在 Second Activity 中调用,因为第二个 Activity 的意图是在startActivityForResult中传递的 -
正如@Saurabh 所说,仅从使用 startActivityForResult 启动的活动接收结果。
-
@Saurabk 感谢您的回答,但有什么方法可以发送第三个活动的结果,或者我应该将结果发送到第二个活动并从那里发送到 mainactivity?
-
是的,第 3 次 > 第 2 次 > 第 1 次,正如我在回答中所写的那样。
标签: android