Вызывать класс из одного проекта в другом проекте? - PullRequest
1 голос
/ 03 мая 2011

Я очень плохо знаком с затмением и развитием Android в целом, и мне нужна помощь в следующем.Я построил два проекта Android в Eclipse с помощью Android SDK:

  1. «Проект ORF401» - предназначен для платформы Android 2.2
  2. «Проект карты» - предназначен для платформы API Google 2.2 2.2

Я выполнил шаги, указанные в стандартном Hello World, Google Maps для Android, учебник и получил карту Google для отображения на эмуляторе при запуске второго проекта.

У меня есть меню, настроенное в 1-м проекте, для которого одним из вариантов является загрузка карты.Однако я не уверен, как загрузить карту в этом проекте, поскольку для каждого проекта можно указать только одну цель сборки, и поэтому я не могу указать API Карт Google как (дополнительную) цель сборки.Есть ли способ вызвать основной класс .java из второго проекта в первом проекте?Я вижу, где можно сделать ссылку на второй проект в свойствах проекта, но я не уверен, как это использовать.Одним из возможных решений, которое я нашел в Интернете, было добавление следующего кода под регистром переключения в первом проекте:

Intent intent = new Intent(this, {googleMap}.class);  
startActivity(intent);

Я предполагаю, что для этого потребуется дополнительный класс googleMap.java в первом проекте, а также другойактивность, но я не могу заставить его работать.Кто-нибудь может высказать предположение о том, как мне это сделать?

Если код для одного или обоих проектов поможет, я буду рад опубликовать его.Спасибо

Ответы [ 2 ]

1 голос
/ 03 мая 2011

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

Первое, что я бы предложил - внимательно прочитайте о деятельности и намерениях.Отправляйтесь на http://developer.android.com - все четко объяснено.После того, как все будет прояснено, вы увидите смысл в создании какой-то кнопки, которая при нажатии открывает новый экран с разработанной вами функцией карты.А потом давайте вернемся или сделаем что-нибудь еще, например, откроем новый экран, браузер и т. Д.

И перестаньте пытаться вызывать другой проект из другого :) Я думаю, вы не такхочу что-то делать.

Просто чтобы убедиться, что меня не неправильно поняли - конечно, вы можете захотеть иметь два проекта.Но это, скорее всего, приведет к двум отдельным приложениям.К счастью, приложения могут также взаимодействовать с намерениями, поставщиками контента или еще парой.Посмотрите, как приложение Contacts переносит вас в приложение GMail, если вы хотите отправить письмо.Если это то, чего вы хотите достичь - все равно нужно прочитать о намерениях.

edit:
Вот ссылка, о которой я упоминал в комментариях:
http://android -developers.blogspot.com / 2010/07 / как приготовить кекс и съесть его тоже. html
В нем объясняется, как достичь «дополнительной цели», которую вы бы хотелихотел бы иметь.

0 голосов
/ 03 мая 2011

Есть способы вызова класса из одного проекта в другом проекте, но здесь есть большие проблемы. Первый проект можно запустить на любом устройстве Android. Второе, однако, требует API Карт Google. Вы все равно не сможете вызвать его, потому что его невозможно установить, если вы не находитесь в среде, которая поддерживает API Google. Это действительно бесполезно, если у вас нет дополнительных функций в проекте 1, которые могут существовать без проекта 2.

Я бы предложил использовать метод Intent, а не пытаться взломать что-то вместе, что позволит вам получить доступ к другому классу. Несмотря на это, хотя связывание этих двух вместе, как это кажется чрезмерно сложным и подверженным ошибкам. Я бы предложил просто встроить функцию сопоставления в проект 1 и использовать API Google. Большинство основных устройств в любом случае поддерживают их.

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

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