Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么我在画廊里的照片没有显示?_Android_Android Gallery - Fatal编程技术网

Android 为什么我在画廊里的照片没有显示?

Android 为什么我在画廊里的照片没有显示?,android,android-gallery,Android,Android Gallery,我想从我的图库中选择一张图片,并在ImageView中显示。 但是照片没有显示出来。为什么? 这就是生命周期的问题?或者如何使用setImageBitmap是错误的? 我怎么修理? 请帮帮我 -这是全班的- public class RegisterView extends Activity { TextView textCategory; ImageView imageButton; EditText productName,price; private final static int CA

我想从我的图库中选择一张图片,并在ImageView中显示。 但是照片没有显示出来。为什么? 这就是生命周期的问题?或者如何使用setImageBitmap是错误的? 我怎么修理? 请帮帮我

-这是全班的-

public class RegisterView extends Activity {
TextView textCategory;
ImageView imageButton;
EditText productName,price;
private final static int CATEGORY=0;
private final static int GALLERY=1;
private final static int CAMERA=2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.register_view);
    textCategory=(TextView)findViewById(R.id.text_category);
    imageButton=(ImageView)findViewById(R.id.select_image);
    productName=(EditText)findViewById(R.id.product_name);
    price=(EditText)findViewById(R.id.price);
    Button categoryButton=(Button)findViewById(R.id.category_button);
    categoryButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent=new Intent(RegisterView.this,CategoryList.class);
            startActivityForResult(intent,CATEGORY);
        }
    });
    ImageView selectImage=(ImageView)findViewById(R.id.select_image);
    selectImage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            DialogFragment dialog=new SelectImageDialog();
            dialog.show(getFragmentManager(),"dialog");
        }
    });
    Button saveButton=(Button)findViewById(R.id.save_button);
    saveButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(textCategory.getText().toString().equals("") || imageButton.getDrawable()==null || productName.getText().toString().equals("") || price.getText().toString().equals("")) {
                Bundle bundle=new Bundle();
                bundle.putString("message","全ての項目を入力してください");
                DialogFragment dialog=new CategoryList.AttensionDialog();
                dialog.setArguments(bundle);
                dialog.show(getFragmentManager(),"dialog");
            }else{
                DialogFragment dialog = new SaveTimeDialog();
                dialog.show(getFragmentManager(), "dialog");
            }
        }
    });
}

public static class SelectImageDialog extends DialogFragment{
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState){
        AlertDialog.Builder builder=new AlertDialog.Builder(getActivity());
        builder.setMessage("画像の設定方法を選択してください").setPositiveButton("カメラ",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Intent intent=new Intent();
                intent.setAction("android.media.action.IMAGE_CAPTURE");
                startActivityForResult(intent,CAMERA);
            }
        }).setNegativeButton("ギャラリー",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Intent intent=new Intent();
                intent.setAction(intent.ACTION_GET_CONTENT);
                intent.setType("image/*");
                startActivityForResult(intent,GALLERY);
            }
        });
        return builder.create();
    }
}

public static class SaveTimeDialog extends DialogFragment{
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState){
        AlertDialog.Builder builder=new AlertDialog.Builder(getActivity());
        builder.setMessage("データを登録しますか?").setPositiveButton("はい",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                //入力されたデータをデータベースに登録する
            }
        }).setNegativeButton("いいえ",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

            }
        });
        return builder.create();
    }
}

@Override
public void onActivityResult(int requestCode,int resultCode,Intent data){
    if(requestCode==CATEGORY){
        if(resultCode==RESULT_OK) {
            Bundle bundle = data.getExtras();
            textCategory.setText(bundle.getString("item"));
        }
    }else if(requestCode==GALLERY){
        if(resultCode==RESULT_OK){
            try{
                InputStream is=getContentResolver().openInputStream(data.getData());
                Bitmap bitmap=BitmapFactory.decodeStream(is);
                is.close();
                imageButton.setImageBitmap(bitmap);
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }else if(requestCode==CAMERA){
        if(resultCode==RESULT_OK){
            Bitmap bitmap=(Bitmap)data.getExtras().get("data");
            imageButton.setImageBitmap(savePic(bitmap));
        }
    }
}

public Bitmap savePic(Bitmap bitmap){
    String path= Environment.getExternalStorageDirectory().getPath();
    try {
        FileOutputStream outputStream = new FileOutputStream(path+"pic.png");
        bitmap.compress(Bitmap.CompressFormat.PNG,100,outputStream);
        outputStream.close();
    }catch (Exception e){
        e.printStackTrace();
    }
    String[] paths = {Environment.getExternalStorageDirectory().getPath()+"/pic.png"};
    String[] mimeType = {"image/png"};
    MediaScannerConnection.scanFile(getApplicationContext(), paths, mimeType, new MediaScannerConnection.OnScanCompletedListener() {
        @Override
        public void onScanCompleted(String s, Uri uri) {
        }
    });
    return bitmap;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.my, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
}
这是logcat的信息

11-14 15:31:23.126  18201-18201/com.example.appdev.shop D/libEGL﹕ loaded /system/lib/egl/libEGL_adreno200.so
11-14 15:31:23.126  18201-18201/com.example.appdev.shop D/libEGL﹕ loaded /system/lib/egl/libGLESv1_CM_adreno200.so
11-14 15:31:23.126  18201-18201/com.example.appdev.shop D/libEGL﹕ loaded /system/lib/egl/libGLESv2_adreno200.so
11-14 15:31:23.126  18201-18201/com.example.appdev.shop I/Adreno200-EGL﹕ <qeglDrvAPI_eglInitialize:265>: EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_JB_2.5.6.04.02.02.093.081_msm8960_JB_2.5.6_CL3544079_release_AU (CL3544079)
    Build Date: 06/27/13 Thu
    Local Branch:
    Remote Branch: m/jb_2.5.6
    Local Patches: NONE
    Reconstruct Branch: AU_LINUX_ANDROID_JB_2.5.6.04.02.02.093.081 +  NOTHING
11-14 15:31:23.156  18201-18201/com.example.appdev.shop D/OpenGLRenderer﹕ Enabling debug mode 0
11-14 15:31:27.301  18201-18201/com.example.appdev.shop W/IInputConnectionWrapper﹕ showStatusIcon on inactive InputConnection

对于KITKAT上的问题..你需要做这项工作

  public static final String KITKAT_VALUE = 1002;

  Intent intent;

  if (Build.VERSION.SDK_INT < 19){
       intent = new Intent();
       intent.setAction(Intent.ACTION_GET_CONTENT);
       intent.setType("*/*");
       startActivityForResult(intent, KITKAT_VALUE);
  } 
  else 
  {
       intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
       intent.addCategory(Intent.CATEGORY_OPENABLE);
       intent.setType("*/*");
       startActivityForResult(intent, KITKAT_VALUE);
  }

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

     if (resultCode == Activity.RESULT_OK && data!=null) {
             Uri selectedImage = data.getData();
             String[] filePathColumn = { MediaStore.Images.Media.DATA };

             Cursor cursor = getContentResolver().query(selectedImage,
                filePathColumn, null, null, null);
             cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String picturePath = cursor.getString(columnIndex);
            cursor.close();
            imageButton.setImageBitmap(BitmapFactory.decodeFile(picturePath));

     }
}

参考资料:

请键入谷歌如何在android中捕获图像,这将明确解决您的问题您可以输入完整的类代码吗?可以指定您使用的操作系统版本吗?因为从galary中选择图像会在Kitkatuk中产生问题!我试着搜索,我不知道。我的操作系统版本是kitkat…未显示错误。我可以在gallery中选择图片,但图片未显示在ImageView中。请检查日志猫打开gallery时,此消息显示为11-14 15:05:31.102 16627-16627/com.example.appdev.shop W/IInputConnectionWrapper﹕ 在非活动输入连接上显示状态图标请在您的问题中张贴完整的日志。我是福洛卡特。11-14 15:15:16.884 17347-17347/com.example.appdev.shop D/dalvikvm﹕ 延迟启用CheckJNI 11-14 15:15:17.094 17347-17347/com.example.appdev.shop D/libEGL﹕ loaded/system/lib/egl/libEGL_adreno200.so 11-14 15:15:17.094 17347-17347/com.example.appdev.shop D/libEGL﹕ loaded/system/lib/egl/libGLESv1_CM_adreno200.so 11-14 15:15:17.094 17347-17347/com.example.appdev.shop D D/libEGL﹕ loaded/system/lib/egl/libGLESv2_adreno200.so