Android 如何将位图从片段传递到活动?

Android 如何将位图从片段传递到活动?,android,android-fragments,bitmap,Android,Android Fragments,Bitmap,strong text应用程序有一个包含图像的片段,当我单击将此图像设置为壁纸时,我想将图像传递给activity use Bitmap 从片段: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.infl

strong text应用程序有一个包含图像的片段,当我单击将此图像设置为壁纸时,我想将图像传递给activity use Bitmap

片段

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_view_pager, null);
        ImageView resultView = (ImageView) view.findViewById(R.id.result_image);

        resultView.setDrawingCacheEnabled(true);
        bitmap = resultView.getDrawingCache();

        resultView.setImageResource(pageNumber);
        return view;
    }
当我单击设置时,要执行活动

        case R.id.setForce:

                new TaskSetWallpaper(PreviewActivity.this).execute(bitmap);

                break;

您可以在片段中创建一个接口,期望片段的父活动实现该接口。然后,您可以将活动强制转换到片段的
onAttach()
中的接口,并调用接口中的方法来通知事件或将数据传递给父活动

片段:

public class MyFragment extends Fragment {
    private EventListener eventListener;

    public interface EventListener() {
        void onSetImage(Bitmap bitmap);
    }

    @Override
    public void onAttach(Activity a) {
        super.onAttach(a);
        if (a instanceof EventListener) {
            eventListener = (EventListener) a;
        } else {
            throw new UnsupportedOperationException("Parent activity should implement MyFragment.EventListener");
        }
    }
}
父活动:

public class ParentActivity extends AppCompatActivity implements MyFragment.EventListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //---------
        //---------
    }

    @Override
    void onSetImage(Bitmap bitmap){
        new TaskSetWallpaper(PreviewActivity.this).execute(bitmap);
    }
}

您必须获取某个URL或URI,将其转换为位图并将其设置为imageview。通过接口回调将该URL/URI传递给您的活动,因为传递位图有时会导致应用程序因内存不足异常而崩溃。@Ajinkya S谢谢,您的回答帮助我更好地理解了我的问题!这对我很有帮助,当我单击设置
case R.id.setForce:new TaskSetWallpaper(PreviewActivity.this).execute(mBitmap);中断