如何将Bitmap从Fragment传递给Activity?

时间:2017-05-02 15:05:30

标签: android android-fragments bitmap

强文本应用程序有一个包含图像的片段,我想将图像传递给活动使用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;

1 个答案:

答案 0 :(得分:0)

您可以在片段中创建一个接口,该片段的父活动应该实现该接口。然后,您可以将活动强制转换为片段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);
    }
}