java.lang.ClassCastException Неуверенность в последствиях броска, который я сделал - PullRequest
1 голос
/ 30 июня 2019

После блестящего урока я застрял с проблемой приведения.

Приложение в основном представляет собой API-интерфейс stackoverflow, который использует модернизацию и выполняет вызовы для получения вопросов, деталей вопросов и т. Д. *

Это все сказано и сделано. Я потерян, почему он дольше запускается.

stacktrace

Что-то не так с броском в базовой деятельности:

BaseActivity

public class BaseActivity extends AppCompatActivity {



    private ControllerCompositionRoot mControllerCompositionRoot;

    protected ControllerCompositionRoot getCompositionRoot() {

        if(mControllerCompositionRoot == null) {

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

        }

        return  mControllerCompositionRoot;
    }
}

, который вызывается в этом занятии класса

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());
    }


}

Сначала я бы понял, почему должен быть сделан актерский состав, чему я следовал в уроке.но есть небольшой способ, которым я могу продолжать подключаться к этому без понимания всей концепции MVC и т. д. и последствий того, как реализовать это в приложении для Android.

Любая помощь будет очень приветствоваться, а также разработки.

репо - github

1 Ответ

1 голос
/ 30 июня 2019

Зарегистрируйте пользовательский класс приложения в манифесте.Я проверил репо и обнаружил, что пользовательский класс не зарегистрирован.Таким образом, ваш пользовательский класс не используется как класс приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...