选定的图像未在 mainActivity 中显示

2024-05-20

为什么所选的图像没有显示在Claims.java?我错过了什么吗?

清单文件

  <uses-permission android:name="android.permission.CAMERA" />
        <uses-feature android:name="android.hardware.camera" />
        <uses-feature android:name="android.hardware.camera.autofocus" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-sdk
            android:minSdkVersion="7"
            android:targetSdkVersion="16" />

相机主文件

<?xml version="1.0" encoding="utf-8"?>

<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:fillViewport="false">


<AbsoluteLayout
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="5dp" >

    </LinearLayout>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Select Picture"
        android:id="@+id/btnSelectPhoto"
        android:layout_x="111dp"
        android:layout_y="305dp" />

    <Button
        android:layout_width="121dp"
        android:layout_height="61dp"
        android:text="Submit"
        android:id="@+id/button8"
        android:layout_x="131dp"
        android:layout_y="681dp" />

    <ImageView
        android:layout_width="285dp"
        android:layout_height="285dp"
        android:id="@+id/imageView"
        android:layout_x="43dp"
        android:layout_y="376dp"
        android:contentDescription="i" />

</AbsoluteLayout>

</ScrollView>

声明.java

公共类声明扩展了片段{

ImageView viewImage;
Button b;

private String selectedImagePath;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    View claims = inflater.inflate(R.layout.camera_main, container, false);
    b = (Button) claims.findViewById(R.id.btnSelectPhoto);
    viewImage=(ImageView)claims.findViewById(R.id.imageView);
    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            selectImage();
        }
    });
    return claims;
}


private void selectImage() {

    final CharSequence[] options = {"Take Photo", "Choose from Gallery", "Cancel"};

    AlertDialog.Builder builder = new AlertDialog.Builder(Claims.this.getActivity());
    builder.setTitle("Add Photo!");
    builder.setItems(options, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int item) {
            if (options[item].equals("Take Photo")) {
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                File f = new File(android.os.Environment.getExternalStorageDirectory(), "temp.jpg");
                intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
                String state = Environment.getExternalStorageState();
                if (state.equals(Environment.MEDIA_MOUNTED)) {
                    Toast.makeText(getActivity().getApplicationContext(), " mounted ", Toast.LENGTH_LONG).show();

                }
                startActivityForResult(intent, 1);
            } else if (options[item].equals("Choose from Gallery")) {
                Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(intent, 2);

            } else if (options[item].equals("Cancel")) {
dialog.dismiss();
            }
        }
    });
    builder.show();
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == Activity.RESULT_OK) {
        if (requestCode == 1) {
            File f = new File(Environment.getExternalStorageDirectory().toString());
            if(f != null){
                Toast.makeText(getActivity().getApplicationContext(), " not null ", Toast.LENGTH_LONG).show();
            }
            for (File temp : f.listFiles()) {
                if (temp.getName().equals("temp.jpg")) {
                    f = temp;
                    break;
                }
            }
            try {
                Bitmap bitmap;
                BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();

                bitmap = BitmapFactory.decodeFile(f.getAbsolutePath(),
                        bitmapOptions);

                viewImage.setImageBitmap(bitmap);

                String path = android.os.Environment
                        .getExternalStorageDirectory()
                        + File.separator
                        + "Phoenix" + File.separator + "default";
                f.delete();
                OutputStream outFile = null;
                File file = new File(path, String.valueOf(System.currentTimeMillis()) + ".jpg");
                try {
                    outFile = new FileOutputStream(file);
                    bitmap.compress(Bitmap.CompressFormat.JPEG, 85, outFile);
                    outFile.flush();
                    outFile.close();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else if (requestCode == 2) {

            Uri selectedImage = data.getData();
            String[] filePath = { MediaStore.Images.Media.DATA };
            Cursor c = getActivity().getContentResolver().query(selectedImage, filePath, null, null, null);
            c.moveToFirst();
            int columnIndex = c.getColumnIndex(filePath[0]);
            String picturePath = c.getString(columnIndex);
            if(picturePath.startsWith("/")) picturePath = picturePath.substring(1);
            c.close();
            Bitmap thumbnail = (BitmapFactory.decodeFile(picturePath));
            Drawable d = new BitmapDrawable(thumbnail);
            viewImage.setBackground(d);
        }
    }
}

当我选择图像时,没有任何显示imageviewe。但是如果我从相机捕获图像,图像可以显示......为什么?

10-22 14:28:11.128    7451-7451/com.example.project.project E/ViewRootImpl﹕ sendUserActionEvent() mView == null
10-22 14:28:15.228    7451-7451/com.example.project.project E/BitmapFactory﹕ Unable to decode stream: java.io.FileNotFoundException: /https:/lh3.googleusercontent.com/-ZiYOXTFTKqQ/URcxPqvEtTI/AAAAAAAAAJw/GN893VrnxGw/I/PANO_20130210_133321.jpg: open failed: ENOENT (No such file or directory)

这是什么意思?我怎样才能解决这个问题?我怎么知道sdk版本在android studio?请帮助我...谢谢


正如我在你的 logcat 中看到的,你的路径是错误的。

开头多了一个“/”。

你可以试试:

if(picturePath.startsWith("/")) picturePath = picturePath.substring(1);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

选定的图像未在 mainActivity 中显示 的相关文章

随机推荐

  • 在 Keras 中连接两个目录迭代器

    假设我有类似以下内容 image data generator ImageDataGenerator rescale 1 255 train generator image data generator flow from director
  • 使用 ASP.NET 控件而不进行数据绑定

    看来我使用 ASP NET 数据绑定太久了 以至于忘记了一些基础知识 我正在 ASPX 页面中动态创建一个表 无需数据绑定 foreach XXX x in TTTT gt tr td td tr
  • MATLAB:将当前文件夹设置为脚本位置

    我在不同的文件夹中有一些脚本和数据 我使用addpath和相对路径经常 我的问题是 只有当我的当前文件夹是我执行的脚本所在的位置时 这才有效 例如 如果我执行添加路径 X 的脚本 A 然后执行位于路径 X 中的脚本 B 则 Matlab 不
  • 表单关闭时的操作

    如何通过按下关闭按钮来使窗体不被关闭 并且被关闭 private void Form1 Closed object sender EventArgs e Form1 Hide 所以表格都是封闭的 您应该在 FormClosing 而不是 F
  • MPMusicPlayerController 和 setNowPlayingItem

    我在用着MPMusicPlayerController 特别是与setNowPlayingItem协议 它是为了cydia 但我在制作时遇到了一些问题和理论的警告 似乎某些协议和方法不起作用 我收到如下警告 Tweak xm 177 war
  • 如何在 Vue.js 中将 InnerHtml 复制到剪贴板?

    我想将此 for 循环的内容复制到剪贴板中 div class links div class row p makeUrl name p div div
  • @api.one、@api.multi 和 @api.model 有什么区别?

    我很困惑 api one api multi and api model在奥杜 三者之间有什么区别以及它们的用例是什么 api one旨在仅在一条记录上调用方法时使用 它确保在调用方法时不存在多个记录api one装饰师 假设你有记录par
  • 如何使方法通用而不出现“未找到匹配的形状”

    除了编写大量样板文件之外 我不知道如何克服这个 找不到匹配的形状 错误 要点中说明的基本思想是 我有一个非常基本的方法版本 有效 但非常具体 然后是一个采用mapper参数并且更通用 也可以工作 但特定于一种特定类型 然后是第三个版本 它采
  • 将维基百科中的表格加载到 R 中

    我正在尝试从以下 URL 将最高法院法官表加载到 R 中 https en wikipedia org wiki List of Justices of the Supreme Court of the United States http
  • Android 2.3 使用外部 JAIN-SIP(J-SIP) 堆栈 |类路径

    我正在尝试在 Android 2 3 3 上使用 JAIN SIP J SIP 库 http jsip java net 因此 我使用了 SIP Stack 附带的一个非常基本的 SIP 示例应用程序 此示例在 Android 设备 问题是
  • 当参数类型不明确时,编译器如何选择调用哪个方法?

    我有以下代码 TestMethod public void TestFoo Foo null private void Foo object bar Console WriteLine Foo object private void Foo
  • 如何删除 GAE 搜索 API 中的搜索索引

    我使用 Google App Engine 搜索 API 我不知道下图中的功能名称是什么 我想删除 客户索引 和 客户 也许正确的问题是 如何删除搜索索引 在生产中 您可以删除索引中的文档 但索引仍然可见 https developers
  • 使用画布仅删除文本而不删除图像

    我正在尝试删除画布元素中的文本 而不丢失Background Image of the Canvas Element 我想我需要保存Imagesrc并把它还给Canvas Element之后clearRect 但我不知道该怎么做 我希望有人
  • 您上传的 APK 未对齐 zip 错误

    我刚刚通过android studio完成并签署了apk 然后我通过 apkprotect com 做了一个 apk 保护 当我尝试将 apk 上传到 Play 商店时 出现此错误 您上传的 APK 未进行 zip 对齐 您需要在 APK
  • 如何在MFC中对CListCtrl中的Item进行排序?

    我在 MFC 中制作了一个基于对话框的应用程序 我将 CListCtrl 控件放在对话框上 并将其视图样式设置为报告类型 我在此列表视图中有五列 所有列都是字符串类型 我想在此列表中实现排序 也就是说 当我单击某一列时 它应该对列表中的项目
  • 停止 Netbeans 发出蜂鸣声

    在 Windows 7 上 当我在已保存的文件上持续按 Ctrl S 时 将播放 Windows 错误声音 这非常烦人 而且当我习惯在工作期间不断按 Ctrl S 时 这会让人分心 有没有办法禁用这个烦人的features 出色地 这可能会
  • 引起原因:com.google.crypto.tink.shaded.protobuf.InvalidProtocolBufferException:协议消息包含无效标签(零)

    启动活动时 我的应用程序在 getEncryptedSharedPrefs 处崩溃 if getEncryptedSharedPrefs getString pinSettingsLogin isEmpty getEncryptedShar
  • 为什么我应该关心压缩 MS Access .mdb 文件?

    我们分发一个使用 MS Access mdb 文件的应用程序 有人注意到 在 MS Access 中打开文件后 文件大小缩小了很多 这表明该文件是压缩的良好候选者 但我们不为用户提供执行此操作的方法 所以 我的问题是 这重要吗 我们关心吗
  • 匿名函数声明简写 javascript

    我想知道是否有任何方法可以通过使用像 Google Closure 这样的预处理器 编译器来缩短 JavaScript 中的匿名函数声明 我认为这对于回调来说会非常整洁 例如 通常我会这样编写 qunit 测试用例 test Dummy t
  • 选定的图像未在 mainActivity 中显示

    为什么所选的图像没有显示在Claims java 我错过了什么吗 清单文件