选择图像时进入新页面的意图

Intent to a new page when an image is selected

目前我创建了一个具有相机功能的应用程序,允许用户 select 他们的图像或 capturing.I 从 获取教程。但我希望 selected 图像意图到另一个页面 而不是仅显示在 imageView 上。图片需要固定屏幕,可以在下面添加标题,例如 whatsapp.

这是我目前尝试过的方法。

一切从Project1.java开始,imagebutton.

 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中的imageButton时出现如下错误。

11-03 11:44:44.800 31219-31219/com.example.project.project E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.example.project.project, PID: 31219 java.lang.NullPointerException at android.content.ContextWrapper.getApplicationInfo(ContextWrapper.java:164) at android.view.ContextThemeWrapper.getTheme(ContextThemeWrapper.java:103) at android.support.v7.app.AlertDialog.resolveDialogTheme(AlertDialog.java:108) at android.support.v7.app.AlertDialog$Builder.(AlertDialog.java:269) at com.example.project.project.ImageFitScreen.selectImage(ImageFitScreen.java:77) at com.example.project.project.Project1.onClick(Project1.java:80) at android.view.View.performClick(View.java:4654) at android.view.View$PerformClick.run(View.java:19438) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:146)

(ImageFitScreen.java:77)

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

(Project1.java:80)

i.selectImage();

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

据我了解,ImageFitScreen 是一个 activity,应该使用 Intent 开始,即

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

如果您查看异常,它会告诉您上下文为空,即。 ImageFitScreen.this 在行

处为空
AlertDialog.Builder builder = new AlertDialog.Builder(ImageFitScreen.this);

这是因为,activity 只有在 activity 经理启动时才会有上下文。我们使用 intent 请求 activitymanger 启动一个 activity。希望对你有帮助。

更新:

您可以使用 ImageFitScreen 来保存 imageview 和 edittext 作为标题。然后在需要用户选择图像时启动 ImageFitScreeen。在 ImageFitScreen 的 onCreate 上,您可以启动 selectImage() 函数,即。

Project1.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();

    }