从一个活动转移的图像O另一个节目强制关闭错误 [英] transfer an image from one activity o another show force close error

查看:120
本文介绍了从一个活动转移的图像O另一个节目强制关闭错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  @覆盖
保护无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_main);
    IMG =(ImageView的)findViewById(R.id.ImageView01);    ((按钮)findViewById(R.id.Button01))
            .setOnClickListener(新OnClickListener(){
                公共无效的onClick(查看为arg0){
                    意向意图=新的Intent();
                    intent.setType(图像/ *);
                    intent.setAction(Intent.ACTION_GET_CONTENT);
                    startActivityForResult(Intent.createChooser(意向,选择图片),SELECT_PICTURE);
                }
            });
}公共无效的onActivityResult(INT申请code,INT结果code,意图数据){
    如果(结果code == RESULT_OK){
        如果(要求code == SELECT_PICTURE){
            乌里selectedImageUri = data.getData();
            selectedImagePath =的getPath(selectedImageUri);
            的System.out.println(映像路径:+
                    + selectedImagePath);
            img.setImageURI(selectedImageUri);
            意向意图=新意图(MainActivity.this,upload.class);
            intent.putExtra(选定的图像,selectedImageUri);
            startActivity(意向);        }
    }
}公共字符串的getPath(URI URI){
    的String [] =投影{MediaStore.Images.Media.DATA};
    光标光标= managedQuery(URI,投影,NULL,NULL,NULL);
    INT与Column_Index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    返回cursor.getString(Column_Index中);}

这是我的第二个活动

  @覆盖
保护无效的onCreate(捆绑savedInstanceState){
     super.onCreate(savedInstanceState);
     的setContentView(R.layout.activityfcy_main);
     ImageView的imgv =(ImageView的)findViewById(R.id.ImageView01);
     位图位图=去codeFILE(新文件(getIntent()getExtras()的getString(选择图像)));
     imgv.setImageBitmap(位图);
}

OK。现在,当我从画廊加载图像显示它的力量关闭误差

这里的崩溃:

  06-15 17:18:33.744:E / AndroidRuntime(402):在
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
06-15 17:18:33.744:E / AndroidRuntime(402):在
android.app.ActivityThread.access $ 2300(ActivityThread.java:125)
06-15 17:18:33.744:E / AndroidRuntime(402):在
android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2033)
06-15 17:18:33.744:E / AndroidRuntime(402):在android.os.Handler.dispatchMessage(Handler.java:99)
06-15 17:18:33.744:E / AndroidRuntime(402):在android.os.Looper.loop(Looper.java:123)
06-15 17:18:33.744:E / AndroidRuntime(402):在android.app.ActivityThread.main(ActivityThread.java:4627)
06-15 17:18:33.744:E / AndroidRuntime(402):在java.lang.reflect.Method.invokeNative(本机方法)
06-15 17:18:33.744:E / AndroidRuntime(402):在java.lang.reflect.Method.invoke(Method.java:521)
06-15 17:18:33.744:E / AndroidRuntime(402):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)
06-15 17:18:33.744:E / AndroidRuntime(402):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-15 17:18:33.744:E / AndroidRuntime(402):在dalvik.system.NativeStart.main(本机方法)
06-15 17:18:33.744:E / AndroidRuntime(402):致:显示java.lang.NullPointerException
06-15 17:18:33.744:E / AndroidRuntime(402):在java.io.File.fixSlashes(File.java:234)
06-15 17:18:33.744:E / AndroidRuntime(402):在java.io.File.init(File.java:201)
06-15 17:18:33.744:E / AndroidRuntime(402):在java.io.File中(File.java:152)
06-15 17:18:33.744:E / AndroidRuntime(402):在com.example.newprojimage.upload.onCreate(upload.java:18)
06-15 17:18:33.744:E / AndroidRuntime(402):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-15 17:18:33.744:E / AndroidRuntime(402):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
06-15 17:18:33.744:E / AndroidRuntime(402):11 ...更多


解决方案

试图去code你的形象,请检查您已经通过文件名是一个有效的之前。唯一的例外似乎是抱怨的文件名是有点无效的,因此作为NPE文件不包含手柄一个有效文件。
所以基本上把新文件()......的号召外脱code,检查该文件是一个有效的对象,如果是去code吧。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    img = (ImageView)findViewById(R.id.ImageView01);

    ((Button) findViewById(R.id.Button01))
            .setOnClickListener(new OnClickListener() {
                public void onClick(View arg0) {
                    Intent intent = new Intent();
                    intent.setType("image/*");
                    intent.setAction(Intent.ACTION_GET_CONTENT);
                    startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE);
                }
            });
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == SELECT_PICTURE) {
            Uri selectedImageUri = data.getData();
            selectedImagePath = getPath(selectedImageUri);
            System.out.println("Image Path :" +
                    " " + selectedImagePath);
            img.setImageURI(selectedImageUri);
            Intent intent = new Intent(MainActivity.this, upload.class);
            intent.putExtra("selected image",selectedImageUri);  
            startActivity(intent);

        }
    }
}

public String getPath(Uri uri) {
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(uri, projection, null, null, null);
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);

}

and this is my 2nd activity

@Override
protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activityfcy_main);
     ImageView imgv = (ImageView) findViewById(R.id.ImageView01);
     Bitmap bitmap = decodeFile(new File(getIntent().getExtras().getString("selected image")));
     imgv.setImageBitmap(bitmap); 
}

Ok now when i load image from gallery it show force close error

Here's the crash:

06-15 17:18:33.744: E/AndroidRuntime(402): at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
06-15 17:18:33.744: E/AndroidRuntime(402): at
android.app.ActivityThread.access$2300(ActivityThread.java:125)
06-15 17:18:33.744: E/AndroidRuntime(402): at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
06-15 17:18:33.744: E/AndroidRuntime(402): at android.os.Handler.dispatchMessage(Handler.java:99)
06-15 17:18:33.744: E/AndroidRuntime(402): at android.os.Looper.loop(Looper.java:123)
06-15 17:18:33.744: E/AndroidRuntime(402): at android.app.ActivityThread.main(ActivityThread.java:4627)
06-15 17:18:33.744: E/AndroidRuntime(402): at java.lang.reflect.Method.invokeNative(Native Method)
06-15 17:18:33.744: E/AndroidRuntime(402): at java.lang.reflect.Method.invoke(Method.java:521)
06-15 17:18:33.744: E/AndroidRuntime(402): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-15 17:18:33.744: E/AndroidRuntime(402): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-15 17:18:33.744: E/AndroidRuntime(402): at dalvik.system.NativeStart.main(Native Method) 
06-15 17:18:33.744: E/AndroidRuntime(402): Caused by: java.lang.NullPointerException
06-15 17:18:33.744: E/AndroidRuntime(402): at java.io.File.fixSlashes(File.java:234)
06-15 17:18:33.744: E/AndroidRuntime(402): at java.io.File.init(File.java:201)
06-15 17:18:33.744: E/AndroidRuntime(402): at java.io.File.(File.java:152)
06-15 17:18:33.744: E/AndroidRuntime(402): at com.example.newprojimage.upload.onCreate(upload.java:18)
06-15 17:18:33.744: E/AndroidRuntime(402): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-15 17:18:33.744: E/AndroidRuntime(402): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
06-15 17:18:33.744: E/AndroidRuntime(402): ... 11 more

解决方案

Before trying to decode your image, try checking that the file name you've passed is a valid one. The exception seems like complaining that the filename is somewhat invalid and therefore the NPE as File doesn't contain a handle to a valid file. So basically put the "new File()...." outside the call to decode, check that File is a valid object, and if yes decode it.

这篇关于从一个活动转移的图像O另一个节目强制关闭错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆