У меня есть проект приложения Android, который также имеет несколько проектов библиотеки Android. Каждый проект библиотеки имеет свои собственные действия и ресурсы. Я реализовал NavigationDrawer
и хотел бы иметь его во всех действиях, поэтому я создал базовый проект (проект библиотеки Android), в котором есть ящик (следуя инструкциям в этом ответе: Same Navigation Drawer in different Activities). Тогда идея состоит в том, что каждый субпроект (проекты библиотеки Android) будет простираться от базы, но в этот момент я сталкиваюсь с проблемой обращения к кругу.Как избежать круговой ссылки между проектами?
У меня есть такая же структура, как на этой картинке:
Там нет никаких проблем, чтобы каждый вид деятельности в подпроектах продлить из библиотеки Base, но проблема заключается в том, что базе библиотеки также должно знать о деятельности (отсюда и циклическая ссылка), так что я могу справиться с щелчками в NavigationDrawer
, что-то подобное:
mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
case 0:
Intent intent = new Intent(this, SubProjectOneActivityOne.class);
startActivity(intent);
finish();
break;
case 1:
Intent intent1 = new Intent(this, SubProjectOneActivityTwo.class);
startActivity(intent1);
break;
case 2:
Intent intent2 = new Intent(this, SubProjectTwoActivityOne.class);
startActivity(intent2);
break;
default:
break;
}
}});
так что на данный момент я ударяя в тупик с Тхи подход. Возможно ли перегрузить событие click в подпроектах? Есть ли у кого-нибудь другие предложения?
Я обработал это, предоставив объект «router». Базовый проект может показать, что и каждый из других модулей может зарегистрировать маршрут. Эти маршруты могут выполнять действие, которое может или не может быть запущено. – daentech
@daentech Вы можете поделиться дополнительной информацией и, возможно, с кодом? – Apostrofix
Вот пример кода. Надеюсь, он скомпилируется, но я удалил ненужный код. Вы могли бы назвать свои маршруты как константы в своем базовом проекте и, возможно, ссылаться на них в других проектах? https://gist.github.com/daentech/f372f3a6529d08979f1c Это также может обрабатывать маршруты с использованием '/ route/' и передает данные в намерении как' getData() ' –
daentech