【问题标题】:resultCode is 0 besides the using startActivityForResult and setResult除了使用 startActivityForResult 和 setResult 之外,resultCode 为 0
【发布时间】:2015-10-17 14:50:09
【问题描述】:

我使用 Activity1 的 startActivityForResult 来启动 Activity2:

btnSelectFiles.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            savePreferences();
            Intent i = new Intent(getApplicationContext(),
                    FileManagerActivity.class);
            Bundle mBundle = new Bundle();
            mBundle.putString("FileManager", "NewOrder");
            i.putExtras(mBundle);
            startActivityForResult(i, Constants.addFilesCode);

        }
    });

onActivityResult 方法:

在 Activity2 中:

 Intent returnIntent = new Intent();
setResult(1,returnIntent);   
FileManagerActivity.this.finish();

但是在 Activity1 requestCode 正确,但 resultCode 始终为 0。

我不使用后退按钮。

我在Activity1中的onActivityResult

public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Log.i(TAG, "onActivityResult");
        Log.i(TAG,
                "onActivityResult requestCode" + Integer.toString(requestCode)
                        + "resultCode" + Integer.toString(resultCode));
        // adding files to the list if the files were added successfully 
        if (requestCode == Constants.addFilesCode)
        {

            // successfull operation
            if (resultCode == 1)
            {
                if (adapter == null)
                    addFiles();
                else if (adapter.getCount() == 0)
                    addFiles();
                else {
                    adapter.notifyDataSetChanged();
                    changeFileHeader();
                }
                btnFilesRemove.setVisibility(View.VISIBLE);
                for (int b = 0; b < FileManagerActivity.getFinalAttachFiles()
                        .size(); b++) {
                    checks.add(b, 0);
                }
            }
        }

【问题讨论】:

  • 只是检查,但是你是在Activity1onActivityResult方法中检查这个值吗?
  • 是的。我收到 requestCode (是 5 - 正确)并且 resultCode 总是 0
  • 我没有看到代码有任何明显错误,您能否添加更多周围的代码来提供帮助。你在哪里打电话给setResult?我们也可以看到onActivityResult 方法吗?
  • 尝试在活动中调用super.finish(); 或只调用finish() 而不是FileManagerActivity.this.finish()。一切似乎都是正确的
  • 请使用Activity类中定义的常量。在这种情况下,正确的常数是 RESULT_OK。用这个常量替换 1 ,你就正确地得到了回调。

标签: android android-intent android-activity onactivityresult


【解决方案1】:

我的问题是我开始使用FLAG_ACTIVITY_NO_HISTORY 进行活动。我一删除它,resultCode 就开始向调用者传播。

【讨论】:

    猜你喜欢
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    相关资源
    最近更新 更多