Я включил библиотеку Kotlin (https://github.com/ognev-zair/kotlin-agendacalendarview) в свой проект Java. Используя рекомендацию из других сообщений, я могу получить проект, чтобы скомпилировать, и это половина работает. Используя информацию в файле readme на GitHub, я преобразовал ее в Java и создал следующие классы: < /p>
mainActivity < /p>
public class AgendaActivity2 extends AppCompatActivity implements CalendarController {
private AgendaCalendarView agendaCalendarView;
private CalendarContentManager contentManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_agenda2);
agendaCalendarView = findViewById(R.id.agenda_calendar_view_2);
agendaCalendarView.getAgendaView().getAgendaListView().setSaveEnabled(false);
// Setup date range
Calendar minDate = Calendar.getInstance();
Calendar maxDate = Calendar.getInstance();
minDate.add(Calendar.MONTH, -10);
minDate.add(Calendar.YEAR, -1);
minDate.set(Calendar.DAY_OF_MONTH, 1);
maxDate.add(Calendar.YEAR, 1);
// Create your event adapter (implemented below)
EventAgendaAdapter adapter = new EventAgendaAdapter(this);
// Initialize the calendar content manager
contentManager = new CalendarContentManager(
this,
agendaCalendarView,
adapter
);
contentManager.setLocale(Locale.getDefault());
contentManager.setDateRange(minDate, maxDate);
List events = new ArrayList();
Calendar eventStart = Calendar.getInstance();
Calendar eventEnd = Calendar.getInstance();
eventEnd.add(Calendar.HOUR, 2);
events.add(new MyCalendarEvent(
eventStart,
eventEnd,
new DayItem(eventStart.getTime(), eventStart.getFirstDayOfWeek(),false,"March"),
new Event("Meeting", "Project discussion")
));
eventStart.add(Calendar.DAY_OF_MONTH,2);
eventEnd.add(Calendar.DAY_OF_MONTH,2);
events.add(new MyCalendarEvent(
eventStart,
eventEnd,
new DayItem(eventStart.getTime(), eventStart.getFirstDayOfWeek(),false,"March"),
new Event("Meeting", "Project discussion")
));
contentManager.loadItemsFromStart(events);
}
// CalendarController interface methods:
@Override
public int getEmptyEventLayout() {
// Return your layout resource for an "empty event"
return R.layout.empty_event_item;
}
@Override
public int getEventLayout() {
// Return your layout resource for an event item
return R.layout.event_item;
}
@Override
public void onDaySelected(IDayItem dayItem) {
// Handle a day being selected
Toast.makeText(this, "Day selected: " + dayItem.getDate(), Toast.LENGTH_SHORT).show();
}
@Override
public void onScrollToDate(Calendar calendar) {
// Optionally, handle scroll events (e.g., update toolbar title)
}
}
< /code>
eventagendaadapter < /p>
public class EventAgendaAdapter extends DefaultEventAdapter {
private final SimpleDateFormat headerFormat;
public EventAgendaAdapter(Context context) {
headerFormat = new SimpleDateFormat(
"ddd MM yyyy",
Locale.ENGLISH
);
}
@Override
public int getEventLayout(boolean hasEvent) {
return hasEvent ? R.layout.event_item : R.layout.empty_event_item;
}
@Override
public int getHeaderLayout() {
return R.layout.view_agenda_header;
}
@Override
public void getEventItemView(@NonNull View view,
@NonNull CalendarEvent event,
int position) {
TextView title = view.findViewById(R.id.event_title);
TextView desc = view.findViewById(R.id.event_time);
if (event.getEvent() instanceof Event) {
Event javaEvent = (Event) event.getEvent();
title.setText(javaEvent.getName());
desc.setText(javaEvent.getDescription());
}
}
@Override
public void getHeaderItemView(@NonNull View view, @NonNull Calendar day) {
TextView header = view.findViewById(R.id.view_agenda_day_of_month);
header.setText(headerFormat.format(day.getTime()));
}
}
< /code>
mycalendarevent < /p>
public class MyCalendarEvent extends BaseCalendarEvent {
private Calendar startTime = Calendar.getInstance();
private Calendar endTime = Calendar.getInstance();
private Object event;
private IDayItem dayReference;
private IWeekItem weekReference;
public MyCalendarEvent(){}
public MyCalendarEvent(Calendar start, Calendar end,
IDayItem dayItem, Event event) {
this.startTime = start;
this.endTime = end;
this.dayReference = dayItem;
this.event = event;
}
@NotNull
@Override
public Calendar getStartTime() { return startTime; }
@NotNull
@Override
public Calendar getEndTime() { return endTime; }
@Nullable
@Override
public Object getEvent() { return event; }
@Override @NotNull
public MyCalendarEvent copy() {
return new MyCalendarEvent(
(Calendar) startTime.clone(),
(Calendar) endTime.clone(),
dayReference,
(Event) event
);
}
@Override
public boolean hasEvent() {
return event != null;
}
}
< /code>
событие < /p>
public class Event {
private long id;
private String name;
private String description;
public Event(String name, String description) {
this.name = name;
this.description = description;
}
// Getters and setters
public String getName() { return name; }
public String getDescription() { return description; }
}
< /code>
Я получаю систему.constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {}
< /code>
constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
val inflater = context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
inflater.inflate(R.layout.view_agenda, this, true)
(findViewById(R.id.refresh_layout) as SwipeRefreshLayout).isEnabled = false
}
< /code>
constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
...
val inflater = context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
inflater.inflate(R.layout.view_agendacalendar, this, true)
}
< /code>
Following your advice in the comment, I searched the logcat in more detail and found more information:
Accessing hidden field Landroid/widget/AbsListView;->mSelectorRect:Landroid/graphics/Rect; (max-target-p, reflection, denied)
java.lang.NoSuchFieldException: No field mSelectorRect in class Landroid/widget/AbsListView; (declaration of 'android.widget.AbsListView' appears in /system/framework/framework.jar!classes4.dex)
at java.lang.Class.getDeclaredField(Native Method)
at se.emilsjolander.stickylistheaders.WrapperViewList.(WrapperViewList.java:35)
at se.emilsjolander.stickylistheaders.StickyListHeadersListView.(StickyListHeadersListView.java:129)
at se.emilsjolander.stickylistheaders.StickyListHeadersListView.(StickyListHeadersListView.java:119)
at com.ognev.kotlin.agendacalendarview.agenda.AgendaListView.(AgendaListView.kt:18)
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:742)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:894)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:849)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1011)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:972)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1014)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:972)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1014)
at android.view.LayoutInflater.inflate(LayoutInflater.java:540)
at android.view.LayoutInflater.inflate(LayoutInflater.java:462)
at com.ognev.kotlin.agendacalendarview.agenda.AgendaView.(AgendaView.kt:28)
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:742)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:894)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:849)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1011)
at android.view.LayoutInflater.inflate(LayoutInflater.java:540)
at android.view.LayoutInflater.inflate(LayoutInflater.java:462)
at com.ognev.kotlin.agendacalendarview.AgendaCalendarView.(AgendaCalendarView.kt:64)
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:742)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:894)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:849)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1011)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:972)
at android.view.LayoutInflater.inflate(LayoutInflater.java:570)
at android.view.LayoutInflater.inflate(LayoutInflater.java:462)
at android.view.LayoutInflater.inflate(LayoutInflater.java:413)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:751)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:197)
at com.ollytreeapplications.epilepsyjournal.agenda.AgendaActivity2.onCreate(AgendaActivity2.java:32)
at android.app.Activity.performCreate(Activity.java:9002)
at android.app.Activity.performCreate(Activity.java:8980)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1526)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4030)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4235)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:112)
at android.app.servertransaction.TransactionExecutor.executeNonLifecycleItem(TransactionExecutor.java:174)
at android.app.servertransaction.TransactionExecutor.executeTransactionItems(TransactionExecutor.java:109)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:81)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2636)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loopOnce(Looper.java:232)
at android.os.Looper.loop(Looper.java:317)
at android.app.ActivityThread.main(ActivityThread.java:8705)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886)
< /code>
Let me know if you need anything else.
Подробнее здесь: https://stackoverflow.com/questions/795 ... va-project
System.err При использовании конструктора библиотеки Kotlin в проекте Java ⇐ Android
Форум для тех, кто программирует под Android
1743621312
Anonymous
Я включил библиотеку Kotlin (https://github.com/ognev-zair/kotlin-agendacalendarview) в свой проект Java. Используя рекомендацию из других сообщений, я могу получить проект, чтобы скомпилировать, и это половина работает. Используя информацию в файле readme на GitHub, я преобразовал ее в Java и создал следующие классы: < /p>
mainActivity < /p>
public class AgendaActivity2 extends AppCompatActivity implements CalendarController {
private AgendaCalendarView agendaCalendarView;
private CalendarContentManager contentManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_agenda2);
agendaCalendarView = findViewById(R.id.agenda_calendar_view_2);
agendaCalendarView.getAgendaView().getAgendaListView().setSaveEnabled(false);
// Setup date range
Calendar minDate = Calendar.getInstance();
Calendar maxDate = Calendar.getInstance();
minDate.add(Calendar.MONTH, -10);
minDate.add(Calendar.YEAR, -1);
minDate.set(Calendar.DAY_OF_MONTH, 1);
maxDate.add(Calendar.YEAR, 1);
// Create your event adapter (implemented below)
EventAgendaAdapter adapter = new EventAgendaAdapter(this);
// Initialize the calendar content manager
contentManager = new CalendarContentManager(
this,
agendaCalendarView,
adapter
);
contentManager.setLocale(Locale.getDefault());
contentManager.setDateRange(minDate, maxDate);
List events = new ArrayList();
Calendar eventStart = Calendar.getInstance();
Calendar eventEnd = Calendar.getInstance();
eventEnd.add(Calendar.HOUR, 2);
events.add(new MyCalendarEvent(
eventStart,
eventEnd,
new DayItem(eventStart.getTime(), eventStart.getFirstDayOfWeek(),false,"March"),
new Event("Meeting", "Project discussion")
));
eventStart.add(Calendar.DAY_OF_MONTH,2);
eventEnd.add(Calendar.DAY_OF_MONTH,2);
events.add(new MyCalendarEvent(
eventStart,
eventEnd,
new DayItem(eventStart.getTime(), eventStart.getFirstDayOfWeek(),false,"March"),
new Event("Meeting", "Project discussion")
));
contentManager.loadItemsFromStart(events);
}
// CalendarController interface methods:
@Override
public int getEmptyEventLayout() {
// Return your layout resource for an "empty event"
return R.layout.empty_event_item;
}
@Override
public int getEventLayout() {
// Return your layout resource for an event item
return R.layout.event_item;
}
@Override
public void onDaySelected(IDayItem dayItem) {
// Handle a day being selected
Toast.makeText(this, "Day selected: " + dayItem.getDate(), Toast.LENGTH_SHORT).show();
}
@Override
public void onScrollToDate(Calendar calendar) {
// Optionally, handle scroll events (e.g., update toolbar title)
}
}
< /code>
eventagendaadapter < /p>
public class EventAgendaAdapter extends DefaultEventAdapter {
private final SimpleDateFormat headerFormat;
public EventAgendaAdapter(Context context) {
headerFormat = new SimpleDateFormat(
"ddd MM yyyy",
Locale.ENGLISH
);
}
@Override
public int getEventLayout(boolean hasEvent) {
return hasEvent ? R.layout.event_item : R.layout.empty_event_item;
}
@Override
public int getHeaderLayout() {
return R.layout.view_agenda_header;
}
@Override
public void getEventItemView(@NonNull View view,
@NonNull CalendarEvent event,
int position) {
TextView title = view.findViewById(R.id.event_title);
TextView desc = view.findViewById(R.id.event_time);
if (event.getEvent() instanceof Event) {
Event javaEvent = (Event) event.getEvent();
title.setText(javaEvent.getName());
desc.setText(javaEvent.getDescription());
}
}
@Override
public void getHeaderItemView(@NonNull View view, @NonNull Calendar day) {
TextView header = view.findViewById(R.id.view_agenda_day_of_month);
header.setText(headerFormat.format(day.getTime()));
}
}
< /code>
mycalendarevent < /p>
public class MyCalendarEvent extends BaseCalendarEvent {
private Calendar startTime = Calendar.getInstance();
private Calendar endTime = Calendar.getInstance();
private Object event;
private IDayItem dayReference;
private IWeekItem weekReference;
public MyCalendarEvent(){}
public MyCalendarEvent(Calendar start, Calendar end,
IDayItem dayItem, Event event) {
this.startTime = start;
this.endTime = end;
this.dayReference = dayItem;
this.event = event;
}
@NotNull
@Override
public Calendar getStartTime() { return startTime; }
@NotNull
@Override
public Calendar getEndTime() { return endTime; }
@Nullable
@Override
public Object getEvent() { return event; }
@Override @NotNull
public MyCalendarEvent copy() {
return new MyCalendarEvent(
(Calendar) startTime.clone(),
(Calendar) endTime.clone(),
dayReference,
(Event) event
);
}
@Override
public boolean hasEvent() {
return event != null;
}
}
< /code>
событие < /p>
public class Event {
private long id;
private String name;
private String description;
public Event(String name, String description) {
this.name = name;
this.description = description;
}
// Getters and setters
public String getName() { return name; }
public String getDescription() { return description; }
}
< /code>
Я получаю систему.constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {}
< /code>
constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
val inflater = context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
inflater.inflate(R.layout.view_agenda, this, true)
(findViewById(R.id.refresh_layout) as SwipeRefreshLayout).isEnabled = false
}
< /code>
constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
...
val inflater = context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
inflater.inflate(R.layout.view_agendacalendar, this, true)
}
< /code>
Following your advice in the comment, I searched the logcat in more detail and found more information:
Accessing hidden field Landroid/widget/AbsListView;->mSelectorRect:Landroid/graphics/Rect; (max-target-p, reflection, denied)
java.lang.NoSuchFieldException: No field mSelectorRect in class Landroid/widget/AbsListView; (declaration of 'android.widget.AbsListView' appears in /system/framework/framework.jar!classes4.dex)
at java.lang.Class.getDeclaredField(Native Method)
at se.emilsjolander.stickylistheaders.WrapperViewList.(WrapperViewList.java:35)
at se.emilsjolander.stickylistheaders.StickyListHeadersListView.(StickyListHeadersListView.java:129)
at se.emilsjolander.stickylistheaders.StickyListHeadersListView.(StickyListHeadersListView.java:119)
at com.ognev.kotlin.agendacalendarview.agenda.AgendaListView.(AgendaListView.kt:18)
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:742)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:894)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:849)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1011)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:972)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1014)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:972)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1014)
at android.view.LayoutInflater.inflate(LayoutInflater.java:540)
at android.view.LayoutInflater.inflate(LayoutInflater.java:462)
at com.ognev.kotlin.agendacalendarview.agenda.AgendaView.(AgendaView.kt:28)
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:742)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:894)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:849)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1011)
at android.view.LayoutInflater.inflate(LayoutInflater.java:540)
at android.view.LayoutInflater.inflate(LayoutInflater.java:462)
at com.ognev.kotlin.agendacalendarview.AgendaCalendarView.(AgendaCalendarView.kt:64)
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:742)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:894)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:849)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1011)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:972)
at android.view.LayoutInflater.inflate(LayoutInflater.java:570)
at android.view.LayoutInflater.inflate(LayoutInflater.java:462)
at android.view.LayoutInflater.inflate(LayoutInflater.java:413)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:751)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:197)
at com.ollytreeapplications.epilepsyjournal.agenda.AgendaActivity2.onCreate(AgendaActivity2.java:32)
at android.app.Activity.performCreate(Activity.java:9002)
at android.app.Activity.performCreate(Activity.java:8980)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1526)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4030)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4235)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:112)
at android.app.servertransaction.TransactionExecutor.executeNonLifecycleItem(TransactionExecutor.java:174)
at android.app.servertransaction.TransactionExecutor.executeTransactionItems(TransactionExecutor.java:109)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:81)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2636)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loopOnce(Looper.java:232)
at android.os.Looper.loop(Looper.java:317)
at android.app.ActivityThread.main(ActivityThread.java:8705)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886)
< /code>
Let me know if you need anything else.
Подробнее здесь: [url]https://stackoverflow.com/questions/79549198/system-err-when-using-inflate-in-kotlin-library-constructor-in-java-project[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия