【问题标题】:Image intent and on back press图像意图和背压
【发布时间】:2018-06-07 08:35:00
【问题描述】:

我已经创建了一个图像意图,我在其中捕获图像并将其保存在图像视图中,但我发现如果我打开相机并按下手机上的后退按钮,我的应用程序会因错误而关闭。

我的意图代码:

btnImg.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(i, 0);
    }
});

我的位图和图像视图代码:

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{
    super.onActivityResult(requestCode, resultCode, data);
    imgBitmap = (Bitmap) data.getExtras().get("data");
    img.setImageBitmap(imgBitmap);
}

错误:

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=0, data=null} to activity {gomugomu.civicalert/gomugomu.civicalert.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Bundle android.content.Intent.getExtras()' on a null object reference
                  at android.app.ActivityThread.deliverResults(ActivityThread.java:5004)
                  at android.app.ActivityThread.handleSendResult(ActivityThread.java:5047)
                  at android.app.ActivityThread.access$1600(ActivityThread.java:229)
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1875)
                  at android.os.Handler.dispatchMessage(Handler.java:102)
                  at android.os.Looper.loop(Looper.java:148)
                  at android.app.ActivityThread.main(ActivityThread.java:7331)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
               Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Bundle android.content.Intent.getExtras()' on a null object reference
                  at gomugomu.civicalert.MainActivity.onActivityResult(MainActivity.java:83)
                  at android.app.Activity.dispatchActivityResult(Activity.java:7165)

第 83 行是这样的:imgBitmap = (Bitmap) data.getExtras().get("data");

我希望当我按下后退按钮关闭相机并转到上一个活动时

【问题讨论】:

  • 你能分享错误日志吗?
  • @R2R 我提出了错误

标签: android android-intent camera onbackpressed


【解决方案1】:

当用户成功执行操作后,resultCode 将等于 RESULT_OK。如果用户按下后退按钮,则 resultCode 将为 RESULT_CANCELED。所以你的代码必须这样修改。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 0 && resultCode == RESULT_OK && data != null) {
            imgBitmap = (Bitmap) data.getExtras().get("data");
            img.setImageBitmap(imgBitmap);
        }
    }

【讨论】:

    【解决方案2】:

    试试这个检查resultCode==RESULT_OKdata!=nullrequest code == 0

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
            if (requestCode == 0 && resultCode == RESULT_OK && data != null) {  
               imgBitmap = (Bitmap) data.getExtras().get("data");
               img.setImageBitmap(imgBitmap);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-11-26
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 2015-02-10
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多