package com.jdroid.android.sample.ui.exceptions; import android.os.Bundle; import android.view.View; import com.jdroid.android.exception.AbstractErrorDisplayer; import com.jdroid.android.exception.DialogErrorDisplayer; import com.jdroid.android.exception.ErrorDisplayer; import com.jdroid.android.exception.SnackbarErrorDisplayer; import com.jdroid.android.fragment.AbstractFragment; import com.jdroid.android.sample.R; import com.jdroid.android.sample.ui.usecases.SampleUseCase; import com.jdroid.java.exception.AbstractException; public class ErrorDisplayerFragment extends AbstractFragment { private SampleUseCase failingUseCase; private ErrorDisplayer errorDisplayer; private Boolean goBackOnError = true; @Override public Integer getContentFragmentLayout() { return R.layout.exception_handling_fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); failingUseCase = new SampleUseCase(); failingUseCase.setFail(true); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); findView(R.id.defaultErrorDisplayer).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ErrorDisplayerFragment.this.errorDisplayer = null; ErrorDisplayerFragment.this.goBackOnError = true; executeUseCase(failingUseCase); } }); findView(R.id.defaultErrorDisplayerNotGoBack).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ErrorDisplayerFragment.this.errorDisplayer = null; ErrorDisplayerFragment.this.goBackOnError = false; executeUseCase(failingUseCase); } }); findView(R.id.snackbarErrorDisplayer).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SnackbarErrorDisplayer errorDisplayer = new SnackbarErrorDisplayer(); errorDisplayer.setParentLayoutId(R.id.container); errorDisplayer.setActionTextResId(R.string.jdroid_retry); errorDisplayer.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { executeUseCase(failingUseCase); } }); ErrorDisplayerFragment.this.errorDisplayer = errorDisplayer; executeUseCase(failingUseCase); } }); } @Override public void onStart() { super.onStart(); registerUseCase(failingUseCase, this); } @Override public void onStop() { super.onStop(); unregisterUseCase(failingUseCase, this); } @Override public void onStartUseCase() { // Do nothing } @Override public ErrorDisplayer createErrorDisplayer(AbstractException abstractException) { AbstractErrorDisplayer.setErrorDisplayer(abstractException, errorDisplayer); if (errorDisplayer == null && !goBackOnError) { DialogErrorDisplayer.markAsNotGoBackOnError(abstractException); } return super.createErrorDisplayer(abstractException); } }