2013-08-28 49 views
0

我)在這裏我已經寫takePicturefromCamera(主要活動課這樣的方法:如何從android中的另一個活動調用takePicture()方法?

public void takePicturefromCamera() { 
      Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
       try { 

        String state = Environment.getExternalStorageState(); 
        if (Environment.MEDIA_MOUNTED.equals(state)) { 
         mImageCaptureUri = Uri.fromFile(mFileTemp); 
        } 
        else { 
        // The solution is taken from here: http://stackoverflow.com/questions/10042695/how-to-get-camera-result-as-a-uri-in-data-folder 

         mImageCaptureUri = InternalStorageContentProvider.CONTENT_URI; 
        } 
        intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri); 
        intent.putExtra("return-data", true); 
        startActivityForResult(intent, REQUEST_CODE_TAKE_PICTURE); 
       } catch (ActivityNotFoundException e) { 

        Log.d("TAG", "cannot take picture", e); 
       } 

     } 

現在我有另一個類我在哪裏做一些裁剪一部分,我的要求是,如果在裁剪時用戶覺得他想採取一些另一張圖片,而不是以前那裏我想在主要活動類的上方takePicturefromCamera()方法上點擊某個按鈕。任何人都可以幫助我,我該如何做到這一點。我已經在做這樣的嘗試:

retake_button.setOnClickListener(
        new View.OnClickListener() { 
         public void onClick(View v) { 
          // setResult(RESULT_CANCELED); 
          main m = new main(); 
          m.takePicturefromCamera(); 
         } 
        }); 

但它給我的錯誤NullPointerException異常在mImageCaptureUri = Uri.fromFile(mFileTemp);

請幫助我。

回答

0

我建議你把takePicturefromCamera()保存在單獨的類中,然後調用這個方法來傳遞所需的activitycontext和數據。

否則你可以使Activity2 extend Activity1和使用takePicturefromCamera()

+0

我的activity2 alredy擴展了其他類 – Neha

+0

好的,那麼你可以嘗試我建議的第一個選項。 –

+0

這將非常漫長,如從activity1到activity2,然後從activity2到activity3和activity3到acivitity1。沒有任何其他的解決方案? – Neha

0

使該方法爲靜態,以便您可以在應用程序的任何位置使用該方法。

另外再添加一個參數「文件」到你的功能。由此,您還可以靈活地在應用程序中爲不同的文件對象使用相同的功能。

希望這會幫助你。

+0

我嘗試通過使其成爲靜態,但然後在startActivityForresult()發生問題。因爲它不支持靜態方法 – Neha

相關問題