我正在編寫一個應用程序,並且由於靈活性,我決定在其設計中使用片段,但是當我運行該應用程序時,我得到了nullobjectreference。問題是片段不等待用戶授予權限,因爲它是異步運行的,所以當它創建攝像頭實例時,它會由於缺少權限而變爲空,即使我先檢查它們。下面是onCreateView代碼:請求在片段中使用相機權限
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if(checkCameraHardware(this.getActivity())){
checkPermissions();
}else {
try {
this.finalize();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}
LinearLayout buttonLayout = (LinearLayout)setButton();
mFrameLayout = new FrameLayout(this.getActivity());
FrameLayout.LayoutParams frameParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
frameParams.gravity = Gravity.BOTTOM;
mFrameLayout.setLayoutParams(frameParams);
mFrameLayout.addView(mPreview);
mFrameLayout.addView(buttonLayout);
return mFrameLayout;
}
,當我創建攝像機實例:
private void cameraCreator(){
mCamera = getCameraInstance();
mCamera.setDisplayOrientation(90);
mPreview = new CameraPreview(this.getActivity(), mCamera);
}
我知道,我不能掛起線程只是許可的要求,但我能做些什麼?
不啓動'的onCreate()線程'但是'onRequestPermissionsResult' – Shark
你FragmentActivity調用該片段是什麼意思? –
我不知道,因爲你發佈的代碼與你在問題中描述的問題沒有多大關聯。 'cameraCreator()'沒有在你的'onCreateView()'片段中被調用,所以就像我說的,我真的不知道。但是,是的,可能在'Activity'-實例化 - 你的片段的'onRequestPermissionResult()' – Shark