Сбой Android Studio, когда я объявляю свой CalenderView

Действительно простое приложение с фрагментами. У меня есть активность, которая содержит CalendarView, который открывается из бокового навигационного ящика. Когда вы откроете фрагмент «журналов», он отправит вас в CalendarActivity, чтобы вы могли выбрать дату, на которую вы хотите регистрировать информацию. Однако при этом приложение вылетает, я выяснил, если убрать строку "logCalendar = (CalendarView) findViewById(R.id.logCalendar);" он не вылетит, но, очевидно, теперь я не могу использовать календарь, чтобы получить дату.

Кто-нибудь знает, почему он падает, или какие-либо другие решения, которые обеспечивают такое же решение для того, чего я хочу достичь.

Спасибо.

Класс CalendarActivity

public class CalendarActivity extends AppCompatActivity {

    private static final String TAG = "CalendarActivity";

    private CalendarView logCalendar;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_calendar);
        logCalendar = (CalendarView) findViewById(R.id.logCalendar);

        logCalendar.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
            @Override
            public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) {
                String date =  dayOfMonth + "/" + month +"/" + year;
                Log.d(TAG, "onSelectedDayChange: date:" + date);
            }
        });

    }
}

Класс, открывающий класс CalenderActivity.

    private TextView currentDate;
    private Button dateButton;

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

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_logs, container, false);
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {



        currentDate = (TextView) view.findViewById(R.id.currentDate);
        dateButton = (Button) view.findViewById(R.id.dateButton);

        Intent intent = new Intent(getActivity(), CalendarActivity.class);
        startActivity(intent);

        super.onViewCreated(view, savedInstanceState);
    }
}

Мой логкэт

2020-12-20 16:45:53.987 28316-28316/com.example.co3201weighttrainingapplication E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.co3201weighttrainingapplication, PID: 28316
    java.lang.ClassCastException: com.applandeo.materialcalendarview.CalendarView cannot be cast to android.widget.CalendarView
        at com.example.co3201weighttrainingapplication.LogsFragment.onViewCreated(LogsFragment.java:48)
        at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:332)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
        at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497)
        at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:447)
        at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2169)
        at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1992)
        at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1947)
        at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
        at androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:413)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

Пожалуйста, добавьте свой logcat здесь

WhiteSpidy. 20.12.2020 17:14
2020-12-20 16:18:53.237 26375-26375/com.example.co3201weighttrainingapplication E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.co3201weighttrainingapplication, PID: 26375 java.lang.ClassCastException: com.applandeo.materialcalendarview.CalendarView cannot be cast to android.widget.CalendarView at com.example.co3201weighttrainingapplication.LogsFragment.onV‌​iewCreated(LogsFragm‌​ent.java:46) at androidx.fragment.app.FragmentStateManager.createView(Fragme‌​ntStateManager.java:‌​332)
TSandler 20.12.2020 17:19

также разместил logcat в основном посте, чтобы его было легче читать

TSandler 20.12.2020 17:47
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
Что такое управление транзакциями JDBC и как оно используется для поддержания согласованности данных?
Что такое управление транзакциями JDBC и как оно используется для поддержания согласованности данных?
Управление транзакциями JDBC - это мощная функция, которая позволяет рассматривать группу операций с базой данных как единую единицу работы. Оно...
Выполнение HTTP-запроса с помощью Spring WebClient: GET
Выполнение HTTP-запроса с помощью Spring WebClient: GET
WebClient - это реактивный веб-клиент, представленный в Spring 5. Это реактивное, неблокирующее решение, работающее по протоколу HTTP/1.1.
Gradle за прокси-сервером
Gradle за прокси-сервером
Создайте проект Gradle под сетевым прокси.
1
3
271
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

опубликованный вами логарифм объясняет саму ошибку. см. эту строку: - java.lang.ClassCastException: com.applandeo.materialcalendarview.CalendarView cannot be cast to android.widget.CalendarView.

Похоже, вы импортировали android родной calendarView вместо своего material calendar view. Проверьте свой imports в своем CalendarActivity class, и вы можете найти что-то вроде этого: - import android.widget.CalendarView; удалите это и измените на import com.applandeo.materialcalendarview.CalendarView;. Я предполагаю, что вы используете applandeo материал календаря с этого сайта.

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