我有一个片段,我有一个按钮从图库中选择一个图像。画廊已成功打开,但是当我选择图像时,我无法从活动中获得结果。所以我考虑使用回调(接口)。但是,我确实知道如何。
你能告诉我一件事吗?
接口
public interface CallbackListener {
void onPhotoTake(String url);
}
片段点击
@OnClick(R.id.addPhoto) void photo() {
if (isStoragePermissionGranted()) {
Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
context.startActivityForResult(i, RESULT_LOAD_IMAGE);
}
}
活动
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
答案 0 :(得分:7)
如果要将数据发送回片段类,可以采用多种方法:
<强>第一强>
在片段类中创建公共方法
使用活动类onActivityResult()
<强>第二强>
活动类
DataReceivedListener listener;
public void setDataReceivedListener(DataReceivedListener listener) {
this.listener = listener;
}
public interface DataReceivedListener {
void onReceived(int requestCode, int resultCode, Intent data)
}
片段类
class fragment extends Fragments implements yourActivityClassName.DataReceivedListener {
@Override
void onReceived(int requestCode, int resultCode, Intent data) {
}
onViewCreated(...) {
((yourActivityName) getActivity()).setDataReceivedListener(this);
}
}
在Acitivity类
中@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (listener != null) {
listener.onActivityResult(requestCode, resultCode, data);
}
}