我正在尝试使用startActivityForResult编写2个活动。但是我的活动没有调用onActivityResult。
编辑:我打开一个dialogBox。当我单击取消时,该框不能再显示。当我点击后提醒我,如果我去第二个活动并回到家里,那个盒子必须出现。
我不明白。我已检查堆栈溢出但没有正确的回合。
请帮助我=)
THX
第一项活动:
...
public void onCreate(Bundle saveInstance) {
...
Intent i = new Intent(HomeActivity.this, EstablishmentActivity.class);
int idEstablishment = listEstablishment.get((int)id).getIdEstablishment();
Log.d(TAG, "id = "+idEstablishment);
i.putExtra("idEstablishment", idEstablishment);
i.putExtra("GPS", wantGPS);
Log.d(TAG, "wantGPS : " + wantGPS);
//Start Intent
startActivityForResult(i, WANTGPS);
...
}
...
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
Log.d(TAG, "go on actovoty rsult");
if (requestCode == WANTGPS) {
if (resultCode == Activity.RESULT_OK) {
wantGPS = intent.getExtras().getBoolean("GPS");
Log.d(TAG, "result : "+wantGPS);
}
}
}
第二项活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.establishment_main);
// Set up the action bar.
final ActionBar actionBar = getActionBar();
if (actionBar == null) {
Log.d(TAG, "actionBar is null !");
}
//Set up the left icon to go back to Home Page
actionBar.setDisplayHomeAsUpEnabled(true);
Intent i = getIntent();
wantGPS = i.getBooleanExtra("GPS", false);
Log.d(TAG, "wantGPS 2 "+wantGPS);
}
...
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == android.R.id.home) {
Intent result = new Intent(EstablishmentActivity.this, HomeActivity.class);
result.putExtra("GPS", wantGPS);
setResult(RESULT_OK, result);
finish();
}
return super.onOptionsItemSelected(item);
}
答案 0 :(得分:1)
我有答案!!如果您遇到与我相同的问题,这个答案可以帮助您:)
我在清单上定义了父活动。所以android不会查看“OnOptionItemSelected”。
我删除了清单上的父活动,但它确实有效!
答案 1 :(得分:0)
根据这篇文章的答案:
请尝试使用以下代码:
Intent result = new Intent();
result.putExtra("GPS", wantGPS);
setResult(RESULT_OK, result);
finish();
使用更简单的Intent()
构造函数似乎解决了很多问题。
答案 2 :(得分:0)
确保您为reqCode(WANTGPS)使用的价值为正值可能是一个好主意。
我之前遇到过(随机生成的)负reqCodes问题,并且onActivityResult在大约一半的时间内没有被解雇(当reqCode变为负数时); OTOH小整数(1,2,100,...)似乎工作正常。 ReqCode也可能有一个上限。 不幸的是,我在文档中找不到任何关于这种行为的提及; Android文档似乎没有解释reqCode应该是什么。