Siguiendo un tutorial brillante que he llegado a atascarse con un problema de casting.

La aplicación es básicamente una API de STACKOVERFLOW que utiliza la modificación y hace llamadas para recuperar las preguntas y las preguntas, etc.

Todo esto dijo y hecho, estoy perdido por qué más tiempo se lanza.

stacktrace

Algo está mal con el elenco en la actividad base:

BaseActivity

public class BaseActivity extends AppCompatActivity {



    private ControllerCompositionRoot mControllerCompositionRoot;

    protected ControllerCompositionRoot getCompositionRoot() {

        if(mControllerCompositionRoot == null) {

            mControllerCompositionRoot = new ControllerCompositionRoot(
                    ((CustomApplication) getApplication()).getCompositionRoot(),
                    this
            );

        }

        return  mControllerCompositionRoot;
    }
}

Que se llama en esta actividad de clase

public class QuestionsListActivity extends BaseActivity implements QuestionsListViewMvcImpl.Listener {

    private StackoverflowApi mStackoverflowApi;
    private QuestionsListViewMvc questionsListViewMvc;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        questionsListViewMvc = getCompositionRoot().getViewMvcFactory().getQuestionListViewMvc(null);

        questionsListViewMvc.registerListener(this);

        mStackoverflowApi = getCompositionRoot().getStackoverflowApi();


        setContentView(questionsListViewMvc.getRootView());
                }

    @Override
    protected void onStart() {
        super.onStart();
        fetchQuestions();
    }

    private void fetchQuestions() {
        mStackoverflowApi.fetchLastActiveQuestions(Constants.QUESTIONS_LIST_PAGE_SIZE)
                .enqueue(new Callback<QuestionsListResponseSchema>() {
                    @Override
                    public void onResponse(Call<QuestionsListResponseSchema> call, Response<QuestionsListResponseSchema> response) {
                        if (response.isSuccessful()) {
                            bindQuestions(response.body().getQuestions());
                        } else {
                            networkCallFailed();
                        }
                    }

                    @Override
                    public void onFailure(Call<QuestionsListResponseSchema> call, Throwable t) {
                        networkCallFailed();
                    }
                } );
    }

    private void bindQuestions(List<QuestionSchema> questionSchemas) {
        List<Question> questions = new ArrayList<>(questionSchemas.size());
        for (QuestionSchema questionSchema : questionSchemas) {
            questions.add(new Question(questionSchema.getId(), questionSchema.getTitle()));
        }
            questionsListViewMvc.bindQuestions(questions);
    }

    private void networkCallFailed() {
        Toast.makeText(this, R.string.error_network_call_failed, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onQuestionClicked(Question question) {
        QuestionDetailsActivity.start(this, question.getId());
    }


}

Entendería primero por qué se debe hacer el reparto que es lo que estaba siguiendo en el tutorial Butteres Poco por la que puedo seguir enchufando a este concepto completo de MVC, etc. y las implicaciones de cómo implementar eso en un Android aplicación.

Cualquier ayuda sería muy bienvenida y las elaboraciones también.

Repo - github

1
beni 30 jun. 2019 a las 16:17

1 respuesta

La mejor respuesta

Registre la clase de aplicación personalizada en manifiesto. Revisé el repo y encontré que la clase personalizada no está registrada. Por lo tanto, su clase personalizada no se utiliza como clase de aplicación.

1
Antonio 30 jun. 2019 a las 13:25