私はおそらく間違った場所でこれを行っていますが、現在、カメラボタンのあるダイアログを表す DialogFragment があり (とりわけ)、組み込みのカメラアプリ (インテントを介して呼び出す) を使用しています。 DialogFragment の onActivityResult()。
これはすべてうまく機能しますが、私の目標は、ダイアログで添付ファイル LinearLayout を見つけ、基本的にキャプチャした画像のコピーをそれに添付することです。たとえば、写真を撮ると、ダイアログの「添付ファイル」セクションに表示されます。
問題は、DialogFragment の onActivityResult() がトリガーされたときに、そのビューを取得できず、null であることです。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_PIC_REQUEST && resultCode == Activity.RESULT_OK) {
try {
LinearLayout attachments = (LinearLayout) getView().findViewById(R.id.landmarkAttachmentView); // <- getView() is null
カメラが戻ったときにトリガーされる可能性があると思われるいくつかの疑わしいメソッドにデバッグログを投入しました.DialogFragmentのビューが利用可能でしたが、ログに記録されませんでした:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.d(TAG, "Creating landmark dialog view");
if(getView() == null) Log.d(TAG, "No view!");
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void show(FragmentManager manager, String tag) {
Log.d(TAG, "Show landmark dialog view");
if(getView() == null) Log.d(TAG, "No view!");
super.show(manager, tag);
}
@Override
public void onViewStateRestored(Bundle savedInstanceState) {
Log.d(TAG, "Restored landmark dialog view");
if(getView() == null) Log.d(TAG, "No view!");
super.onViewStateRestored(savedInstanceState);
}
public void onResume() {
Log.d(TAG, "Resume landmark dialog view");
if(getView() == null) Log.d(TAG, "No view!");
super.onResume();
}
@Override
public void onStart() {
Log.d(TAG, "Start landmark dialog view");
if(getView() == null) Log.d(TAG, "No view!");
super.onStart();
}
onStart と onResume のみがトリガーされましたが、this.view は null でした。別のアクティビティ/フラグメントから返された後に、DialogFragment のビューを取得するにはどうすればよいですか?
ありがとう!