神似安卓官方的一个bug。(原因找到)

我碰到一个安卓的bug但是不能确定是我错了还是确实是安卓的bug。暂且提交。说不定哪天心情好了可以去stack overflow问问 。
我的andriod studio版本是1.2.2
模拟器是安卓自带的,虚拟机是Nexus_5 api 22
我的代码是这样的
mainActivity里面通过按键进入secondActivity。然后secondActivity按返回键返回一个intend。然后在mainActivity通过onActivityResult用log输出出来

mainActivity调用代码

public void onClick(View v) {

 Intent intent = new Intent(MainActiveity.this, secondActivity.class);
startActivityForResult(intent, 1);
}

secondActivity的返回代码

 public void onBackPressed() {
        Log.d("secondActivity","backPressed Perform");
        super.onBackPressed();
        Intent intent = new Intent();
        intent.putExtra("data_return", "Hello");

        setResult(RESULT_OK, intent);//我这里设置的是ok。
//        RESULT_FIRST_USER
        finish();
    }

mainActivity里面的处理代码


 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.d("FirstActivity", "onActivityResult Perform");
        switch (requestCode) {
            case 1:
                if (resultCode == RESULT_OK) {
                    Log.d("FirstActivity", "into Perform");
                    String returnedData = data.getStringExtra("data_return");
                    Log.d("FirstActivity", returnedData);
                } else if(resultCode == RESULT_CANCELED)
            {
                Log.d("FirstActivity", "RESULT_CANCELED Perform");
            }
            else
            {
                Log.d("FirstActivity", "else Perform");
            }
            break;
            default:
                Log.d("FirstActivity", "default Perform");
        }
    }

然而。我的到的运行结果是

07-14 12:57:09.268    6439-6439/com.example.bleuesprit.test D/secondActivity﹕ backPressed Perform
07-14 12:57:09.311    6439-6439/com.example.bleuesprit.test D/FirstActivity﹕ onActivityResult Perform
07-14 12:57:09.311    6439-6439/com.example.bleuesprit.test D/FirstActivity﹕ RESULT_CANCELED Perform
07-14 12:57:09.416    6439-6460/com.example.bleuesprit.test W/EGL_emulation﹕ eglSurfaceAttrib not implemented

安卓强制吧我的结果改成了RESULT_CANCELED,即使我强制说返回的状态是ok的。
虽然一般情况下返回键确实不应该是ok。但是我已经说这样返回ok。为毛他要给我改成canceled???这是不是一个bug呢?有待探究

更新。原因
这里是我的问题。因为我在调用setResult之前调用了super.onBackPressed();
super.onBackPressed();里面调用了finish。所以实际上finish方法在setResult之前已经执行了。

感谢mml的指出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
例子一: 该关系的码是车牌号。因为车牌号是唯一标识每辆车的属性,可以唯一确定一行数据。 根据给定的关系表,可以得出以下函数依赖关系: 车牌号 -> 车型 车牌号 -> 颜色 车牌号 -> 车队名称 车牌号 -> 车队地址 这些函数依赖关系表明,车牌号决定了其他属性的取值。 该关系表属于第一范式(1NF),因为每个属性都是原子的,没有重复的列。 要将该关系表转化为更高级的范式,可以将其改造为如下形式: 车辆表: 车牌号(码) 车型 颜色 车队表: 车队名称(码) 车队地址 车辆-车队关系表: 车牌号(外键) 车队名称(外键) 这样,关系表被分解为三张表,分别表示车辆、车队和它们之间的关系。 例子二: 该关系的码是学号。因为学号是唯一标识每个学生的属性,可以唯一确定一行数据。 根据给定的关系表,可以得出以下函数依赖关系: 学号 -> 姓名 学号 -> 年龄 学号 -> 性别 学号 -> 系号 学号 -> 系名 这些函数依赖关系表明,学号决定了其他属性的取值。 该关系表属于第一范式(1NF),因为每个属性都是原子的,没有重复的列。 要将该关系表转化为更高级的范式,可以将其改造为如下形式: 学生表: 学号(码) 姓名 年龄 性别 系表: 系号(码) 系名 这样,关系表被分解为两张表,分别表示学生和系。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值