我的活动没有调用onActivityResult

时间:2014-07-21 16:07:51

标签: java android android-activity

我正在尝试使用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);
    }

3 个答案:

答案 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应该是什么。