내 응용 프로그램에이 체인이 있습니다. 조각을 만드는 활동입니다. 이 프래그먼트에는 DialogFragment를 호출하는 버튼 클릭이 있습니다. DialogFragment를 사용하면 카메라 메모리를 선택하거나 장치 메모리에서 이미지를 선택할 수 있습니다.DialogFragment에서 데이터를 조각화하여 레크리에이션 활동에서 살아남는 방법
DialogFragment는 새로운 활동에서 자르기 위해 이미지를 보내는 인 텐트를 호출합니다. 그리고 croped 이미지의 마지막 경로는 onActivityResult를 통해 DialogFragment로 되돌려 보내집니다.
얻어진 경로
은 단편에 전달되어야하고 난 사용자가 어떤 장치의 방향이 변경 될 때까지이 lesson용액이 잘 작동하지 에서처럼 활성 인터페이스를 통해 사용 운동.
장치가 DialogFragment 단계 또는 자르기 활동 단계에서 회전하면 첫 번째 활동이 다시 생성되고 조각이 다시 만들어지고 DialogFragment 인스턴스가 삭제됩니다. 그래서 콜백은 실행되지 않고 아무 일도 일어나지 않습니다. 내가 당신의 코드를 보여 드리죠 :
SettingUnitActivity
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
addNewUnitFragment = new AddNewUnitFragment();
fragmentTransaction.replace(R.id.single_unit_fragment_container,addNewUnitFragment,"myff");
fragmentTransaction.commit();
//My callback
@Override
public void call(String string) {
AddNewUnitFragment addNewUnitFragment = (AddNewUnitFragment)
getFragmentManager().findFragmentById(R.id.single_unit_fragment_container);
if(addNewUnitFragment != null) {
addNewUnitFragment.changeFragImage(string);
} else {
}
}
AddNewUnitFragment
public void onClick(View v) {
switch (v.getTag().toString()) {
case "add_image":
DialogImageSelect imageSelDialog = DialogImageSelect.newInstance(0);
imageSelDialog.show(getFragmentManager(),"imageSelDialog");
break;
...
//Function which should be called from SettingUnitActivity
public void changeFragImage (String string) {
//Do something with string
}
DialogImageSelect
public static interface dateCallBack {
public abstract void call(String string);
}
static DialogImageSelect newInstance(int id) {
DialogImageSelect di = new DialogImageSelect();
Bundle args = new Bundle();
args.putInt("id", id);
di.setArguments(args);
return di;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
callerActivity = (dateCallBack)activity;
}
//Here we take and send image path from croper activity
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode != Activity.RESULT_CANCELED) {
if(requestCode == FROM_CROPPER) {
if(data != null) {
croppedFilePath = data.getStringExtra("filePath");
System.out.println("CALL "+callerActivity);
this.callerActivity.call(croppedFilePath);
dismiss();
}
}
}
}
장치가 회전 할 때 어떻게 그것을 유지 조각에 데이터를 보낼 수 있습니까?
UPD : 내 질문에 대한 대답은 부분적으로 this 항목에서 밝혀하지만 활동 회전 후 다시 경우 단편 활동을 통해 DialogFragment에서 인터페이스 콜백을 사용하여 데이터를 전달할 수있는 방법을 아무런 설명이 없습니다.