选择图像时进入新页面的意图
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();
}
目前我创建了一个具有相机功能的应用程序,允许用户 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();
}