onActivityResult 在片段选项卡中不起作用
onActivityResult doesn't work in fragment tab
我有一个使用 listView 的片段选项卡。 listview(arrayAdapter)的每一行都有一个图片按钮,我设置按钮点击事件是这样的:
public View getView(final int position, View convertView, ViewGroup parent)
{
View row = convertView;
if (row == null) {
LayoutInflater inflater = (LayoutInflater) this.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.vehiclereservationdocument_list, parent, false);
}
VehicleReservationDocument vrDocument = getItem(position);
Button btnTakePicture = (Button) row.findViewById(R.id.btnTakePicture);
btnTakePicture.setTag(R.id.WOP_POSITION, position);
btnTakePicture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
takePicture((Integer) view.getTag(R.id.WOP_POSITION));
}
});
btnTakePicture.setVisibility(View.VISIBLE);
return row;
}
public void takePicture(int position) {
// Ação do botão
documentStrategy = DocumentStrategy.PICTURE;
VehicleReservationDocument vrd = vehicleReservationDocuments.get(position);
this.argDocument = position;
fileUri = getOutputMediaFileUri(vrd.getVehicleReservation());
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
VehicleReservationTabFragment.fragmentWhoCalledStartActivityForResult = VehicleReservationTabFragment.VehicleReservationTabFragmentGroupId.TAB_VEHICLERESERVATION_DOCUMENT.ordinal();
TabVehicleReservationDocumentFragment.setFileUri(fileUri);
TabVehicleReservationDocumentFragment.setArgDocument(argDocument);
((Activity) context).startActivityForResult(intent, documentStrategy.ordinal());
}
我的 tabFragment 中的 ActivityResult:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
ACTION _actionOrigin = TabVehicleReservationDocumentFragment._actionOrigin;
UploadDocument uploadDocument = new UploadDocument(getActivity(), _actionOrigin);
uploadDocument.execute();
}
拍完照片需要去onActivityResult,但是不行,没有调用事件。任何人都可以帮助我吗?谢谢!!!
只使用没有上下文的 startActivityForResult
startActivityForResult(intent, documentStrategy.ordinal());
将您的 takePicture 方法移动到片段 class 中。并使用
startActivityForResult(intent, documentStrategy.ordinal());
而不是
((Activity) context).startActivityForResult(intent, documentStrategy.ordinal());
第一个方法回调片段 onActivityResult 其中,第二个回调 activity 的 onActivityResult
要在片段中获取结果,请确保调用 startActivityForResult(intent,111);而不是 getActivity().startActivityForResult(intent,111);在你的片段中。
当你设置你的适配器然后做这样的事情希望这会帮助你。
YourAdapter adapter = new YourAdapter(do your stuff, clickListener);
listView.setAdapter(adapter);
Define this method in your Activity
View.OnClickListener clickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
documentStrategy = DocumentStrategy.PICTURE;
VehicleReservationDocument vrd = vehicleReservationDocuments.get(position);
this.argDocument = position;
fileUri = getOutputMediaFileUri(vrd.getVehicleReservation());
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
VehicleReservationTabFragment.fragmentWhoCalledStartActivityForResult = VehicleReservationTabFragment.VehicleReservationTabFragmentGroupId.TAB_VEHICLERESERVATION_DOCUMENT.ordinal();
TabVehicleReservationDocumentFragment.setFileUri(fileUri);
TabVehicleReservationDocumentFragment.setArgDocument(argDocument);
startActivityForResult(intent, documentStrategy.ordinal());
}
};
**Your Adapterclass**
public class YourAdapter extend BaseAdapter {
private View.onClickListener clickListener;
public YourAdapter(your stuff, View.onClickListener clickListener) {
this.clickListener = clickListener;
}
public View getView(final int position, View convertView, ViewGroup parent) {
View row = convertView;
if (row == null) {
LayoutInflater inflater = (LayoutInflater) this.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.vehiclereservationdocument_list, parent, false);
}
VehicleReservationDocument vrDocument = getItem(position);
Button btnTakePicture = (Button) row.findViewById(R.id.btnTakePicture);
btnTakePicture.setTag(R.id.WOP_POSITION, position);
btnTakePicture.setOnClickListener(clickListener);
btnTakePicture.setVisibility(View.VISIBLE);
return row;
}
}
我有一个使用 listView 的片段选项卡。 listview(arrayAdapter)的每一行都有一个图片按钮,我设置按钮点击事件是这样的:
public View getView(final int position, View convertView, ViewGroup parent)
{
View row = convertView;
if (row == null) {
LayoutInflater inflater = (LayoutInflater) this.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.vehiclereservationdocument_list, parent, false);
}
VehicleReservationDocument vrDocument = getItem(position);
Button btnTakePicture = (Button) row.findViewById(R.id.btnTakePicture);
btnTakePicture.setTag(R.id.WOP_POSITION, position);
btnTakePicture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
takePicture((Integer) view.getTag(R.id.WOP_POSITION));
}
});
btnTakePicture.setVisibility(View.VISIBLE);
return row;
}
public void takePicture(int position) {
// Ação do botão
documentStrategy = DocumentStrategy.PICTURE;
VehicleReservationDocument vrd = vehicleReservationDocuments.get(position);
this.argDocument = position;
fileUri = getOutputMediaFileUri(vrd.getVehicleReservation());
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
VehicleReservationTabFragment.fragmentWhoCalledStartActivityForResult = VehicleReservationTabFragment.VehicleReservationTabFragmentGroupId.TAB_VEHICLERESERVATION_DOCUMENT.ordinal();
TabVehicleReservationDocumentFragment.setFileUri(fileUri);
TabVehicleReservationDocumentFragment.setArgDocument(argDocument);
((Activity) context).startActivityForResult(intent, documentStrategy.ordinal());
}
我的 tabFragment 中的 ActivityResult:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
ACTION _actionOrigin = TabVehicleReservationDocumentFragment._actionOrigin;
UploadDocument uploadDocument = new UploadDocument(getActivity(), _actionOrigin);
uploadDocument.execute();
}
拍完照片需要去onActivityResult,但是不行,没有调用事件。任何人都可以帮助我吗?谢谢!!!
只使用没有上下文的 startActivityForResult
startActivityForResult(intent, documentStrategy.ordinal());
将您的 takePicture 方法移动到片段 class 中。并使用
startActivityForResult(intent, documentStrategy.ordinal());
而不是
((Activity) context).startActivityForResult(intent, documentStrategy.ordinal());
第一个方法回调片段 onActivityResult 其中,第二个回调 activity 的 onActivityResult
要在片段中获取结果,请确保调用 startActivityForResult(intent,111);而不是 getActivity().startActivityForResult(intent,111);在你的片段中。
当你设置你的适配器然后做这样的事情希望这会帮助你。
YourAdapter adapter = new YourAdapter(do your stuff, clickListener);
listView.setAdapter(adapter);
Define this method in your Activity
View.OnClickListener clickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
documentStrategy = DocumentStrategy.PICTURE;
VehicleReservationDocument vrd = vehicleReservationDocuments.get(position);
this.argDocument = position;
fileUri = getOutputMediaFileUri(vrd.getVehicleReservation());
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
VehicleReservationTabFragment.fragmentWhoCalledStartActivityForResult = VehicleReservationTabFragment.VehicleReservationTabFragmentGroupId.TAB_VEHICLERESERVATION_DOCUMENT.ordinal();
TabVehicleReservationDocumentFragment.setFileUri(fileUri);
TabVehicleReservationDocumentFragment.setArgDocument(argDocument);
startActivityForResult(intent, documentStrategy.ordinal());
}
};
**Your Adapterclass**
public class YourAdapter extend BaseAdapter {
private View.onClickListener clickListener;
public YourAdapter(your stuff, View.onClickListener clickListener) {
this.clickListener = clickListener;
}
public View getView(final int position, View convertView, ViewGroup parent) {
View row = convertView;
if (row == null) {
LayoutInflater inflater = (LayoutInflater) this.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.vehiclereservationdocument_list, parent, false);
}
VehicleReservationDocument vrDocument = getItem(position);
Button btnTakePicture = (Button) row.findViewById(R.id.btnTakePicture);
btnTakePicture.setTag(R.id.WOP_POSITION, position);
btnTakePicture.setOnClickListener(clickListener);
btnTakePicture.setVisibility(View.VISIBLE);
return row;
}
}