Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的活动不调用ActivityResult_Java_Android_Android Activity - Fatal编程技术网

Java 我的活动不调用ActivityResult

Java 我的活动不调用ActivityResult,java,android,android-activity,Java,Android,Android Activity,我正在尝试用startActivityForResult编写2个活动。但我的活动不调用ActivityResult 编辑:我打开一个对话框。当我单击“取消”时,该框不得再次显示。当我稍后单击“提醒我”时,如果我去第二个活动并回家,该框必须出现 我不明白。我已经检查了堆栈溢出,但没有正确的答案 你能帮我吗 Thx 第一项活动: ... public void onCreate(Bundle saveInstance) { ... Intent i = new Intent(HomeActivity

我正在尝试用startActivityForResult编写2个活动。但我的活动不调用ActivityResult

编辑:我打开一个对话框。当我单击“取消”时,该框不得再次显示。当我稍后单击“提醒我”时,如果我去第二个活动并回家,该框必须出现

我不明白。我已经检查了堆栈溢出,但没有正确的答案

你能帮我吗

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);
    }
第二项活动:

...
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,除非您有特定的理由不这样做:)