- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Android 编程新手,我正在尝试实现一个应用程序,该应用程序有两个按钮来打开相机并制作照片以及打开图库并选择照片。
我知道如何在设计器模式下使用 onClick()
来做到这一点,但问题是,我不想将所有内容都放在一个大类中。因此,我创建了两个不同的类来处理相机和图库选择。
这是我的代码:
public class Camera extends Activity implements Button.OnClickListener {
private static final int CAMERA_REQUEST = 1888;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap original = (Bitmap) extras.get("data");
ImageView iv = (ImageView) findViewById(R.id.oko);
iv.setImageBitmap(original);
}
}
@Override
public void onClick(View view) {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
}
}
画廊类:
public class Gallery extends Activity implements Button.OnClickListener {
@Override
public void onActivityResult(int requestCode , int resultCode, Intent data) {
if(resultCode == RESULT_OK) {
if(requestCode ==1) {
ImageView oko = (ImageView)findViewById(R.id.oko);
oko.setImageURI(data.getData()); // pobranie z galerii
Bitmap okobit = ((BitmapDrawable) oko.getDrawable()).getBitmap();
ImageView iv = (ImageView) findViewById(R.id.oko);
iv.setImageBitmap(okobit);
}
}
}
@Override
public void onClick(View view) {
Intent gallery = new Intent();
gallery.setType("image/*");
gallery.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(gallery, "Select Image"), 1); // here is a NULL exception
}
}
以及使用这些类的方法:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button gallery = (Button)findViewById(R.id.gallery);
gallery.setOnClickListener(new Gallery());
Button camera = (Button)findViewById(R.id.camera);
camera.setOnClickListener(new Camera());
}
现在我想知道为什么会出现空指针异常?两者,在startActivityForResult中与Camera连接,startActivityForResult与Gallery连接
java.lang.NullPointerException
at android.app.Activity.startActivityForResult(Activity.java:3390)
at android.app.Activity.startActivityForResult(Activity.java:3351)
at com.example.teczowka.app.Gallery.onClick(Gallery.java:39)
我的 xml 文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.example.teczowka.app.MainActivity"
android:background="#dbff56"
android:name="android.hardware.camera"
android:required="true">
<ImageView
android:layout_width="550dp"
android:layout_height="350dp"
android:id="@+id/oko"
android:visibility="visible" />
<Button
android:layout_width="110dp"
android:layout_height="50dp"
android:text="Recognize"
android:id="@+id/recognize"
android:layout_alignParentBottom="true" />
<Button
android:layout_width="110dp"
android:layout_height="50dp"
android:text="Gallery"
android:id="@+id/gallery"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="110dp"
android:layout_height="50dp"
android:text="Camera"
android:id="@+id/camera"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:longClickable="true"
android:onClick="onClick" />
最佳答案
您的其他 Activity (图库和相机)将需要一个布局,如果没有布局, Activity 创建将会失败。
我建议您不要让 Gallery 和 Camera 扩展 Activity 类,而是可以发送父 Activity 的上下文并使用它来启动 Activity
更新:这是解决方案,希望有帮助
主要 Activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_camera);
Button gallery = (Button) findViewById(R.id.gallery);
gallery.setOnClickListener(new Gallery(this));
Button camera = (Button) findViewById(R.id.camera);
camera.setOnClickListener(new Camera(this));
}
@Override
public void onActivityResult(int requestCode , int resultCode, Intent data) {
if(resultCode == RESULT_OK) {
if(requestCode ==1) {
ImageView oko = (ImageView)findViewById(R.id.oko);
oko.setImageURI(data.getData()); // pobranie z galerii
Bitmap okobit = ((BitmapDrawable) oko.getDrawable()).getBitmap();
ImageView iv = (ImageView) findViewById(R.id.oko);
iv.setImageBitmap(okobit);
}
}
}
画廊类
public class Gallery implements View.OnClickListener {
private Activity mContext;
public Gallery(Activity activity){
this.mContext = activity;
}
@Override
public void onClick(View view) {
Intent gallery = new Intent();
gallery.setType("image/*");
gallery.setAction(Intent.ACTION_GET_CONTENT);
mContext.startActivityForResult(Intent.createChooser(gallery, "Select Image"), 1); // here is a NULL exception
}
}
相机类别
public class Camera implements View.OnClickListener {
private static final int CAMERA_REQUEST = 1888;
private Activity mContext;
public Camera(Activity activity) {
this.mContext = activity;
}
@Override
public void onClick(View view) {
Intent cameraIntent = new Intent(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
mContext.startActivityForResult(cameraIntent, CAMERA_REQUEST);
}
}
关于StartActivityForResult 上的 java.lang.NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24026855/
如果我调用 startActivityForResult 并且启动的 Activity 也在另一个 Activity 上调用 startActivityForResult, 是否有可能停止第一个 Ac
Android Fragment 中 startActivityForResult() 与 getActivity().startActivityForResult() 之间有什么区别?在 Fragm
我正在尝试改进一个实际代码,该代码通过 Android 手机与带有 Arduino(电子微 Controller )的 Atmega 建立蓝牙连接。我可以接收数据并将数据发送到微 Controller
我刚开始学习 android 编程,但我在启动 Activity for Result(使用 onActivityResult()、setResult())时遇到问题。 首先,有三个 Activity
我想让谷歌登录到我的应用程序,但我收到了这个错误。 startActivityForResult() deprecated in java 这是我的代码: val signInIntent =
我有一个有 15 个级别的问答游戏。在每个级别之后,我都会显示一个弹出窗口,其中包含一些信息(游戏级别和一些级别规则)。 15 级后,会出现一个最终弹出窗口,其中包含用户赢得了多少积分的信息。我使用
这个问题已经有答案了: Android contacts Display Name and Phone Number(s) in single database query? (3 个回答) 已关闭
我有两个按钮和音频 ListView ,对于第一个按钮,我使用 LongClick 和 startActivityForResult 方法从 MediaPlayer 的另一个 Activity 获取字
我正在编写一个 Android 应用程序,并且我有一个主屏幕,可以启动不同的播放模式(不同的 Activity )。我想开始每项 Activity 以获得结果startActivityForResul
在我的应用程序中,我正在尝试使用 fragment 中的 RecognizerIntent 启动谷歌语音转文本。请求代码的值是 1010,但在 startActivityForResult 上返回的请
我正在尝试使用 startActivityForResult 响应 Activity 的结果。我得到了预期的结果,但不确定如何回应结果。我想做的是根据结果调用不同的 ArrayList(这是一种资源)
我正在尝试从 HTML5 和 JavaScript 调用相机。我的代码如下。但是我得到空指针异常。 主要 Activity : public void onCreate(Bundle savedIn
我正在学习 android 并且很想知道 startActivityForResult() 是否也包含 startActivity() 的属性,即它是否可以用于发送数据,如 startActivity
所以我有两个类(class)。我想做的是将数据从 MainActivity 发送到 Main2,在 Logcat 中登录,然后将控制权返回给 MainActivity 以便用一些其他数据再次重复该步骤
我有以下代码和两个 Activity ,其中我在 MainActivity 中有一个 ListActivity,然后是 AddItemsActivity 以动态地将项目添加到 ListActivity
当我在一个新 Activity 中写一个国家时,我得到了家庭作业来做到这一点(结果)它会把它写在主要 Activity 中,我写的颜色和新 Activity 会将文本颜色更改为我写的颜色。但是“确定”
是否可以从状态栏通知中使用 startActivityForResult()? 假设我有一个 Activity A,它在某些事件中使用 startActivityForResult() 启动 Acti
我想启动 map Activity 并获取位置结果。这是否可以在不使用 MapView 且不需要谷歌地图库的情况下实现? 最佳答案 是的,这是可能的。您应该将“onclick”事件监听器添加到您的 m
我是 android 的新手,有人可以帮助我吗,以下是我尝试运行以扫描条形码的代码,但是每当我单击按钮时它都会出错,它说强制关闭我应该做什么请帮助我。 this.btnCheck = (Button)
我正在使用 StartActivityForResult 进行多项 Activity 。我的主要 Activity 是初始化它。在我的第二个 Activity 中,我输入了一些值并传递给第三个 Act
我是一名优秀的程序员,十分优秀!