亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Android startCamera為我提供了空Intent,并且…是否破壞了我的全局變量?

Android startCamera為我提供了空Intent,并且…是否破壞了我的全局變量?

手掌心 2019-11-04 12:52:51
我有下一個問題:當我嘗試啟動相機時,我可以拍攝照片,甚至將其保存在sdcard上,但是當我準備在設備上顯示該照片的路徑時,會出現錯誤。我的全局變量是2(我使用了1,但是使用2來確保它是一個奇怪的錯誤更好):    private File photofile;private Uri mMakePhotoUri;這是我的入門相機功能:@SuppressLint("SimpleDateFormat")public void farefoto(int num){// For naming the picture    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");    String n = sdf.format(new Date());    String fotoname = "Immagine-"+ n +".jpg";//Going through files and  folders    File photostorage = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);    File photostorage2 = new File(photostorage, "Immagini");    System.out.println(photostorage+"\n"+photostorage2);    photostorage2.mkdirs();// My file (global)    photofile = new File(photostorage2, fotoname);    Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //intent to start camera// My URI (global)    mMakePhotoUri = Uri.fromFile(photofile);    new Bundle(); // I took this code from internet, but if I remove this line, it's the same    i.putExtra(MediaStore.EXTRA_OUTPUT, mMakePhotoUri);    startActivityForResult(i, num); //num would be 1 on calling function}和我的活動結果:   @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        // TODO Auto-generated method stub        if (requestCode == 1){            try{ // tring my global URI                photo = f.decodeAndResizeFile(new File(mMakePhotoUri.getPath()));            }            catch(NullPointerException ex){                System.out.println("fail");                ex.printStackTrace();                try{ // Trying my global FILE                photo = BitmapFactory.decodeFile(photofile.getAbsolutePath());                } catch (Exception e){                    e.printStackTrace();                    Toast.makeText(this, "C'è stato un errore. Riprova a scattare la foto.", Toast.LENGTH_LONG).show();                }...................}總是獲取NullPointerException但是... 如果我再拍一張,那就行了!!。我已經在這里閱讀了所有內容...但是在修改全局變量時它沒有邏輯,我無法再使用它...
查看完整描述

3 回答

?
MYYA

TA貢獻1868條經驗 獲得超4個贊

正如Alex Cohn所說,我的問題是我onCreate之前打電話的onActivityResult原因是內存可能已耗盡(因為有時不這樣做),所以我想讓我的應用“健康”,我嘗試了一些try / catch,因此得到了數據,即使是正在調用onCreate還是onActivityResult在第一次調用時,我都將數據寫在Bundle中,如恢復狀態的鏈接中所述。


查看完整回答
反對 回復 2019-11-04
?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

啟動可能會導致ACTION_IMAGE_CAPTURE您的活動耗盡內存。您應該檢查(我只是一個日志,調試器可能會有自己的副作用),onCreate()您的活動是否在before之前被調用過onActivityResult()。在這種情況下,您應該準備活動以重新初始化自身,可能使用onSaveInstanceState(Bundle)。


請注意,是否要關閉活動或將其保留在后臺的決定取決于您無法控制的整體系統狀態。如果您拍攝第一張照片時的決定是“把他關下來!”,這不會讓我感到驚訝,但是當您再次拍攝照片時,這是“讓他處于背景中”的決定。


查看完整回答
反對 回復 2019-11-04
  • 3 回答
  • 0 關注
  • 471 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號