应用程序崩溃:ACTION_IMAGE_CAPTURE android studio java class 中的修改器问题
App Crash :ACTION_IMAGE_CAPTURE issue with modifiers in android studio java class
大家好
我是 android 开发新手,我有一个使用简单 intent
拍照的代码。
public class MainActivity extends AppCompatActivity {
ImageView mImageView =(ImageView)findViewById(R.id.image_view_taken_picture);
static final int request=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void takePicture(View view )
{
Intent i_picture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if(i_picture.resolveActivity(getPackageManager())!=null)
{
startActivityForResult(i_picture,request);
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent dat) {
if(requestCode==request && resultCode==RESULT_OK)
{
Bundle extra = dat.getExtras();
Bitmap image = (Bitmap)extra.get("data");
mImageView.setImageBitmap(image);
}
}
}
但我总是得到 不幸的是,应用已停止
我知道问题出在 java class 更具体地说是前两个 Variables ImageView 和 int
任何帮助!
提前致谢...
您的 ImageView
初始化行首先崩溃,您无法在 setContentView(R.layout.activity_main);
之前初始化您的视图,因为在此行之前 activity
甚至不知道任何 XML
附加到它所以 activity 会说 "hey i don't have anything like R.id.image_view_taken_picture 'cuz i don't have any XML layout"
ImageView mImageView =(ImageView)findViewById(R.id.image_view_taken_picture); // crash
在setContentView
之后onCreate
进行初始化
ImageView mImageView ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mImageView =(ImageView)findViewById(R.id.image_view_taken_picture);
}
其次,您不必将视图传递给 takePicture
函数
public void takePicture()
{
Intent i_picture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if(i_picture.resolveActivity(getPackageManager())!=null)
{
startActivityForResult(i_picture,request);
}
}
现在只要想拍照就这样称呼takePicture()
大家好
我是 android 开发新手,我有一个使用简单 intent
拍照的代码。
public class MainActivity extends AppCompatActivity {
ImageView mImageView =(ImageView)findViewById(R.id.image_view_taken_picture);
static final int request=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void takePicture(View view )
{
Intent i_picture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if(i_picture.resolveActivity(getPackageManager())!=null)
{
startActivityForResult(i_picture,request);
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent dat) {
if(requestCode==request && resultCode==RESULT_OK)
{
Bundle extra = dat.getExtras();
Bitmap image = (Bitmap)extra.get("data");
mImageView.setImageBitmap(image);
}
}
}
但我总是得到 不幸的是,应用已停止
我知道问题出在 java class 更具体地说是前两个 Variables ImageView 和 int
任何帮助!
提前致谢...
您的 ImageView
初始化行首先崩溃,您无法在 setContentView(R.layout.activity_main);
之前初始化您的视图,因为在此行之前 activity
甚至不知道任何 XML
附加到它所以 activity 会说 "hey i don't have anything like R.id.image_view_taken_picture 'cuz i don't have any XML layout"
ImageView mImageView =(ImageView)findViewById(R.id.image_view_taken_picture); // crash
在setContentView
onCreate
进行初始化
ImageView mImageView ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mImageView =(ImageView)findViewById(R.id.image_view_taken_picture);
}
其次,您不必将视图传递给 takePicture
函数
public void takePicture()
{
Intent i_picture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if(i_picture.resolveActivity(getPackageManager())!=null)
{
startActivityForResult(i_picture,request);
}
}
现在只要想拍照就这样称呼takePicture()