Java 在android应用程序上设置化身
我想让用户在设置他们的用户信息时创建一个头像(如果你愿意,可以创建个人资料图片)。我已经创建了一种方法,用于单击/触摸,要求用户拍摄照片,另一种用于长时间单击,要求用户从他们的图库中选择照片 下面是我在类文件中的方法:Java 在android应用程序上设置化身,java,android,android-camera,avatar,Java,Android,Android Camera,Avatar,我想让用户在设置他们的用户信息时创建一个头像(如果你愿意,可以创建个人资料图片)。我已经创建了一种方法,用于单击/触摸,要求用户拍摄照片,另一种用于长时间单击,要求用户从他们的图库中选择照片 下面是我在类文件中的方法: public void onLaunchCamera(View v) { avatarButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) {
public void onLaunchCamera(View v) {
avatarButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String strAvatarPrompt = "Take your picture to store as your avatar!";
Intent pictureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(Intent.createChooser(pictureIntent, strAvatarPrompt), TAKE_AVATAR_CAMERA_REQUEST);
}
});
avatarButton.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
String strAvatarPrompt = "Choose a picture to use as your avatar!";
Intent pickPhoto = new Intent(Intent.ACTION_PICK);
pickPhoto.setType("image/*");
startActivityForResult(Intent.createChooser(pickPhoto, strAvatarPrompt), TAKE_AVATAR_GALLERY_REQUEST);
return true;
}
});
}
下面是与ImageButton关联的XML:
<ImageButton
android:id="@+id/ImageButton_Avatar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:maxHeight="@dimen/avatar_size"
android:minHeight="@dimen/avatar_size"
android:onClick="onLaunchCamera"
android:scaleType="fitXY"
android:src="@drawable/avatar"></ImageButton>
看起来您可能没有定义avatarButton,如果您遵循LogCat上的起因路径,您会看到底部的一个是NullPointerException 因为我看不到行号,所以问题发生在第201行——我在代码中看到的唯一明显的空指针是avatarButton 根据你想做的,你会想做一些不同的事情 从XML中删除android:onClick=“onLaunchCamera” 设置内容视图后,在onCreate()中添加以下内容:
View avatarButton = findViewById(R.id.ImageButton_Avatar);
avatarButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String strAvatarPrompt = "Take your picture to store as your avatar!";
Intent pictureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(Intent.createChooser(pictureIntent, strAvatarPrompt), TAKE_AVATAR_CAMERA_REQUEST);
}
});
avatarButton.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
String strAvatarPrompt = "Choose a picture to use as your avatar!";
Intent pickPhoto = new Intent(Intent.ACTION_PICK);
pickPhoto.setType("image/*");
startActivityForResult(Intent.createChooser(pickPhoto, strAvatarPrompt), TAKE_AVATAR_GALLERY_REQUEST);
return true;
}
});
这允许您设置具有更多控制的click和longClick侦听器。按照您的方式,直到您第一次单击onClick或onLongClick之前,您从未真正定义过onClick或onLongClick。logcat应该会告诉您它崩溃的原因,请补充一点:我在使用logcat时遇到了问题,因为自3月31日以来,它们的性能没有任何变化。我正在调试模式下运行应用程序,但在logcat中什么也得不到logcat。我要补充一点,我不太擅长阅读logcat告诉我要诚实的东西。谢谢你。我知道你从哪里来。但是,当进入查看化身按钮等。。。我得到的错误是“变量‘avatarButton’已经在范围中定义了”我刚刚意识到avatarButton是通过initAvatar()方法中的这一行定义为ImageButton的:ImageButton avatarButton=(ImageButton)findViewById(R.id.ImageButton_Avatar);事实上,我自己已经解决了。它实际上与“onLaunchCamera”一起工作,作为XML中的onClick,并与您的以下行组合:View avatarButton=findviewbyd(R.id.ImageButton\u Avatar);
View avatarButton = findViewById(R.id.ImageButton_Avatar);
avatarButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String strAvatarPrompt = "Take your picture to store as your avatar!";
Intent pictureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(Intent.createChooser(pictureIntent, strAvatarPrompt), TAKE_AVATAR_CAMERA_REQUEST);
}
});
avatarButton.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
String strAvatarPrompt = "Choose a picture to use as your avatar!";
Intent pickPhoto = new Intent(Intent.ACTION_PICK);
pickPhoto.setType("image/*");
startActivityForResult(Intent.createChooser(pickPhoto, strAvatarPrompt), TAKE_AVATAR_GALLERY_REQUEST);
return true;
}
});