当前位置: 首页 > 知识库问答 >
问题:

当选择图像时,显示新页面的意图

乐正洲
2023-03-14

目前,我创建了一个具有相机功能的应用程序,该功能允许用户选择其图像或进行捕获。我从 https://stackoverflow.com/a/22165449/5261462 那里得到了教程。但是我希望将所选图像意图发送到另一个页面,而不仅仅是显示在imageView上。图像需要修复屏幕,并且可以在下面添加标题,如whatsapp。

这是我目前为止尝试过的。

一切都从 Project1 开始.java,带有图像按钮

 public void addListenerOnButton() {

        imageButton = (ImageButton) findViewById(R.id.imageButton);

        imageButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                ImageFitScreen i = new ImageFitScreen();
                i.selectImage();
            }

        });

    }

ImageFitScreen.java

     public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.image_fit_screen);

            b = (ImageView) findViewById(R.id.imageView3);
            t = (EditText) findViewById(R.id.editText38);
            u = (EditText) findViewById(R.id.editText39);
        }

        public void selectImage() {

            final CharSequence[] options = { "Take Photo", "Choose from Gallery","Cancel" };
            AlertDialog.Builder builder = new AlertDialog.Builder(ImageFitScreen.this);
            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));
                       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();

        }

image_fit_screen

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:layout_width="574dp"
        android:layout_height="523dp"
        android:id="@+id/imageView3"
        android:layout_x="6dp"
        android:layout_y="0dp" />

    <EditText
        android:layout_width="388dp"
        android:layout_height="wrap_content"
        android:id="@+id/editText38"
        android:layout_x="8dp"
        android:layout_y="435dp" />

    <EditText
        android:layout_width="386dp"
        android:layout_height="wrap_content"
        android:id="@+id/editText39"
        android:hint="Add a caption"
        android:layout_x="2dp"
        android:layout_y="410dp" />

</AbsoluteLayout>

但是当我点击Project1.java的< code>imageButton时,出现如下错误。

11-03 11:44:44.800 31219-31219/View.java:19438E/Android运行时︰致命例外:主进程:android.os.Handler.handleCallback,PID:31219Handler.java:733android.os.Handler.dispatchMessage(Handler.java:95)android.os.Looper.loop(Looper.java:146)android.support.v7.app.AlertDialog.resolveDialogTheme(AlertDialog.java:108)android.support.v7.app.AlertDialog$Builder。(AlertDialog.java:269)com.example.project.project.ImageFitScreen.selectImage(ImageFitScreen.java:77)com.example.project.project.Project1$2.onClick(Project1.java:80)android.view.View.performClick(View.java:4654)android.view.View$PerformClick.run(com.example.project.project)com.example.project.project(java.lang.NullPointerException)android.content.ContextWrapper.getApplicationInfo(ContextWrapper.java:164)android.view.ContextThemeWrapper.getTheme(ContextThemeWrapper.java:103)

(ImageFitScreen.java:77)

警报对话框。生成器生成器=新警报对话框。构建器(imagefitscreen . this);

(Project1.java:80)

I . selectimage();

我非常需要一些建议。有人可以请协助我一些建议。请 : )?

共有1个答案

华季萌
2023-03-14

据我所知,ImageFitScreen是一项活动,应该使用意图启动,即。

Intent i = new Intent(Project1.this,ImageFitScreen.class);
startActivity(i);

如果你看看这个异常,它告诉你上下文是空的。ImageFitScreen .这一行为空

AlertDialog.Builder builder = new AlertDialog.Builder(ImageFitScreen.this);

这是因为,只有当活动管理器启动活动时,活动才会有上下文。我们使用意向来要求活动管理员开始一项活动。希望它能帮助你。

更新:

您可以使用 ImageFitScreen 来保存图像视图和编辑文本作为标题。然后,当您需要用户选择图像时,启动 ImageFitScreeen。在创建ImageFitScreen上,您可以启动selectImage()函数,即。

项目1.java

public void addListenerOnButton() {

    imageButton = (ImageButton) findViewById(R.id.imageButton);

    imageButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            Intent i = new Intent(Project1.this,ImageFitScreen.class);
            startActivity(i);
        }

    });

}

ImageFitScreen.java

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.image_fit_screen);

        b = (ImageView) findViewById(R.id.imageView3);
        t = (EditText) findViewById(R.id.editText38);
        u = (EditText) findViewById(R.id.editText39);

        selectImage();
    }

    public void selectImage() {

        final CharSequence[] options = { "Take Photo", "Choose from             Gallery","Cancel" };
        AlertDialog.Builder builder = new AlertDialog.Builder(ImageFitScreen.this);
        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));
                   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();
                   finish();
                   }
                   }
                     });
        builder.setOnKeyListener(new Dialog.OnKeyListener() {

        @Override
        public boolean onKey(DialogInterface dialog, int keyCode,
                KeyEvent event) {
            // TODO Auto-generated method stub
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                finish();
                dialog.dismiss();
            }
            return true;
        }
    });
        builder.show();

    }
 类似资料:
  • 我是Javascript新手——每次刷新页面时,我都会尝试以不同的顺序重新加载页面上的图像——这样每次访问都会有一个新的网站安排。 类似于这里所做的:pauljung.co.uk 这里使用的函数是MathRandom,它可以调整图像的大小,并在加载时将图像放置在不同的位置。但是,我想知道如何准确地将图像调用到页面的HTML主体上? 我尝试在主体中放置一个间隔gif,并将其链接到id=picture

  • 问题内容: 好的,一段时间以来,我一直在寻找答案,但我遇到的所有问题(甚至在搜索javascript时)都与jQuery结合在一起!没人再使用普通的javascript吗?!? 因此,我想要一个下拉列表(使用多个选项进行选择)。选择某个选项后,我希望显示一个隐藏的div。 然后,我尝试使用以下JavaScript代码: 我猜我的问题出在选项中的onClick触发器上,但是我不确定还有什么用?或者,

  • 我试图显示与Html文件位于同一文件夹中的静态图像,但似乎无法获得正确显示的正确路径。我正在开发的应用程序还包括一个从数据库获取数据的java后端,我使用HTML和javascript在前端显示它,整个应用程序作为插件在Web服务器上运行。图像和Html文件都位于此处: Web应用程序的URL路径是: <代码>https://staging.com/jira/secure/SchedulerAct

  • 问题内容: 我有一个表格可以 浏览并选择一个文件。 我要做的是在选择图像后立即显示该图像。而且这是在按下表单上的“提交”按钮之前,因此图像几乎可以肯定位于客户端。能做到吗? 问题答案: 干得好: HTML 脚本:

  • 问题内容: 我需要在手机中打开我的画廊,然后选择一张在活动中在imageview中打开的图片..没什么困难..但是我在模拟器(genymotion)中有完美的代码和thise代码可以运行..但是在小米Mi4上却没有。 打开画廊选择项目,什么也没有。 我没有更多的电话了:( 我尝试下载一些与此主题相关的示例,并且每个示例都是相同的。 您是否有一些从图库中选择图像并在imageview中显示的项目?如

  • 编辑: 下面是Android Studio运行选项卡上的错误