2016-09-04 48 views
1

大家 我在android開發新的,我有一個使用簡單的intent拍照代碼。應用程序崩潰:ACTION_IMAGE_CAPTURE問題與在Android Studio中的Java類修飾符

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類更具體的前兩個變量的ImageView和int
任何幫助! 並在此先感謝...

+2

添加logcats。在沒有日誌的情況下調試崩潰是非常困難的。 – F43nd1r

回答

0

ImageView起始線的撞擊聲第一,你不能因爲在此之前線activity甚至不知道附帶任何XML初始化setContentView(R.layout.activity_main);前視圖,使其活動會說「嘿,我沒有像R.id.image_view_taken_picture什麼「因爲我沒有任何XML佈局」

ImageView mImageView =(ImageView)findViewById(R.id.image_view_taken_picture); // crash 

onCreate初始化setContentView

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()每當你想利用PIC

+0

@Pavrieet Singh。謝謝你的回答。它的工作和解釋是完全神話般的。 :) –

+0

我的榮幸,我很高興你喜歡它,謝謝你的讚賞。 –

+0

你值得我所說的一切:)。 我還有一個問題,你想幫我嗎? –