Пользовательское приложение с аварийным завершением работы SurfaceView

У меня есть собственный SurfaceView, который я хочу отображать в Fragment, но в тот момент, когда я его добавляю, приложение вылетает.

Пользовательский код SurfaceView выглядит следующим образом:

public class CameraFocusIndacatorSurfaceView extends SurfaceView implements Runnable {

    private final Paint paint;
    private final SurfaceHolder mHolder;
    private final Context context;

    @Override
    public void run(){}

    public CameraFocusIndacatorSurfaceView(Context context) {
    super(context);
    mHolder = getHolder();
    this.context = context;
    paint = new Paint(Paint.ANTI_ALIAS_FLAG);
    init();
}           

    private void init(){
        mHolder.setFormat(PixelFormat.TRANSPARENT);
        paint.setColor(Color.WHITE);
        paint.setStyle(Paint.Style.STROKE);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        //do some stuff
    }
}

Приложение вылетает, как только эта строка вызывается в Fragment, в котором находится SurfaceView:

View view = inflater.inflate(R.layout.fragment_attachment_upload_camera, container, false);

А вот стек представлений для Fragment:

Пользовательское приложение с аварийным завершением работы SurfaceView

Конструктор не подбирается, что ли?

Чтобы быть расширенным из макета, любой пользовательский подкласс View должен иметь конструктор public, который принимает в точности Context и AttributeSet. AttachmentUploadCameraFragment не является Context, поэтому подходящий конструктор не найден.

Mike M. 02.05.2018 12:02

Я вижу, но похоже, что фрагмент не проходит в контексте, я попытался изменить его так, как это было сделано в указанной вами ссылке, но он все еще не работает - я обновил свой пост

Marnus Steyn 02.05.2018 12:59

Исправлено, просто нужно было изменить второй конструктор перегрузки, чтобы он имел такую ​​же подпись.

Marnus Steyn 02.05.2018 13:03

Еще раз проверьте мой комментарий и эту ссылку. Вам не хватает параметра AttributeSet.

Mike M. 02.05.2018 13:03

Спасибо - теперь он работает

Marnus Steyn 02.05.2018 13:29
0
5
31
0

Другие вопросы по теме