如何使用接口从 activity 回调回片段
How to get callback from activity back to fragment using interface
我有一个片段,其中有一个按钮可以从图库中选择图像。图库已成功打开,但是当我选择图像时,我没有从 activity 得到结果。所以我考虑使用回调(接口)。不过,我知道怎么做。
你能给我一些建议吗?
界面
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);
}
}
activity
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
- 这里我想使用接口
将结果发送回片段
如果您想将数据发送回片段 class,可以通过多种方式实现:
第一
在片段class
中创建一个public方法
使用 片段对象 在 activity class 的 onActivityResult()
中调用该方法
第二
- 在 activity 中创建一个接口并在片段中实现该接口。然后在界面的帮助下,将您的数据发送到片段
例如
Activity class
DataReceivedListener listener;
public void setDataReceivedListener(DataReceivedListener listener) {
this.listener = listener;
}
public interface DataReceivedListener {
void onReceived(int requestCode, int resultCode, Intent data)
}
片段Class
class fragment extends Fragments implements yourActivityClassName.DataReceivedListener {
@Override
void onReceived(int requestCode, int resultCode, Intent data) {
}
onViewCreated(...) {
((yourActivityName) getActivity()).setDataReceivedListener(this);
}
}
在活动中 class
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (listener != null) {
listener.onActivityResult(requestCode, resultCode, data);
}
}
我有一个片段,其中有一个按钮可以从图库中选择图像。图库已成功打开,但是当我选择图像时,我没有从 activity 得到结果。所以我考虑使用回调(接口)。不过,我知道怎么做。
你能给我一些建议吗?
界面
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);
}
}
activity
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
- 这里我想使用接口 将结果发送回片段
如果您想将数据发送回片段 class,可以通过多种方式实现:
第一
在片段class
中创建一个public方法
使用 片段对象 在 activity class 的
中调用该方法onActivityResult()
第二
- 在 activity 中创建一个接口并在片段中实现该接口。然后在界面的帮助下,将您的数据发送到片段 例如
Activity class
DataReceivedListener listener;
public void setDataReceivedListener(DataReceivedListener listener) {
this.listener = listener;
}
public interface DataReceivedListener {
void onReceived(int requestCode, int resultCode, Intent data)
}
片段Class
class fragment extends Fragments implements yourActivityClassName.DataReceivedListener {
@Override
void onReceived(int requestCode, int resultCode, Intent data) {
}
onViewCreated(...) {
((yourActivityName) getActivity()).setDataReceivedListener(this);
}
}
在活动中 class
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (listener != null) {
listener.onActivityResult(requestCode, resultCode, data);
}
}