为什么onActivityResult()在用户单击“确定”时返回resultCode = 0?

时间:2016-08-02 13:25:45

标签: android android-intent android-activity

以下是我从其他人的例子中找到的两个函数。似乎对我来说效果很好,直到检查resultCode。无论用户按OK还是取消,resultCode都为零。你能告诉我为什么吗?此代码存在于从AppCompatActivity继承的Activity类中。我尝试将调用添加到super.onActivityResult,但它不会以任何明显的方式改变行为。

编辑 onActivityResult中的“intent”参数始终为null。只有requestCode返回正确。救命!愚蠢的电脑......他们讨厌我!

public void onClickChooseNotificationSound(View view)
{
    Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
    intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);
    intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Tone");
    intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, (Uri) null);
    this.startActivityForResult(intent, 5);
}

@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent intent)
{
    //super.onActivityResult(requestCode, resultCode, intent);

    if (resultCode == Activity.RESULT_OK && requestCode == 5)
    {
        Uri uri = intent.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);

        if (uri != null)
        {
            NotificationSound = uri.toString();
        }
        else
        {
            NotificationSound = null;
        }
    }
}

1 个答案:

答案 0 :(得分:3)

这似乎是由调用类在清单中声明为单个实例引起的,例如

 <activity
        android:name=".MyActivity"
        android:launchMode="singleInstance">
    </activity>

我删除了它就像

 <activity android:name=".MyActivity" />

现在一切都很好。现在我需要重新评估为什么我首先在​​所有活动中使用singleInstance。