Java 我的活动不调用ActivityResult
我正在尝试用startActivityForResult编写2个活动。但我的活动不调用ActivityResult 编辑:我打开一个对话框。当我单击“取消”时,该框不得再次显示。当我稍后单击“提醒我”时,如果我去第二个活动并回家,该框必须出现 我不明白。我已经检查了堆栈溢出,但没有正确的答案 你能帮我吗 Thx 第一项活动:Java 我的活动不调用ActivityResult,java,android,android-activity,Java,Android,Android Activity,我正在尝试用startActivityForResult编写2个活动。但我的活动不调用ActivityResult 编辑:我打开一个对话框。当我单击“取消”时,该框不得再次显示。当我稍后单击“提醒我”时,如果我去第二个活动并回家,该框必须出现 我不明白。我已经检查了堆栈溢出,但没有正确的答案 你能帮我吗 Thx 第一项活动: ... public void onCreate(Bundle saveInstance) { ... Intent i = new Intent(HomeActivity
...
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);
}
第二项活动:
...
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);
}
根据这篇文章的回答:
Intent result = new Intent();
result.putExtra("GPS", wantGPS);
setResult(RESULT_OK, result);
finish();
使用更简单的
Intent()
构造函数似乎可以解决很多问题。最好确保用于reqCode(WANTGPS)的值为正值
我以前遇到过(随机生成的)负reqCodes的问题,onActivityResult大约有一半的时间没有被解雇(当reqCode变为负时);OTOH小整数(1,2100,…)似乎工作正常。ReqCode可能也有一个上限。
不幸的是,我在文档中找不到对这种行为的任何提及;Android文档似乎没有解释reqCode应该是什么。我有答案!!如果你有和我一样的问题,这个答案应该对你有帮助:) 我已经在清单上定义了父活动。所以android并没有考虑“OnOptionItemSelected”
我删除了清单上的父活动,它工作了 您是否收到错误或日志?这可能是有帮助的WANTGPS设置为42,所以它是肯定的:p我在我的帖子之前选中了taht,但是thx:)它对我不起作用:(我已经编辑了我的帖子。可能是错误不在这里,但在我的对话框中,你也缺少super.onActivityResult()…请称之为Took I added=)thx。但是为什么调用super很重要呢?它对我的代码在系统意图(摄像头请求、拨号器等)上产生了影响…因此为了更安全起见。始终为活动方法添加所有super,除非您有特定的理由不这样做:)