#java #android #android-activity #android-library
#java #Android #android-активность #android-библиотека
Вопрос:
У меня есть:
- одно приложение без каких-либо действий и AndroidManifest.xml
- один «Проект библиотеки Android» с активностью (MainActivity.java ) и Макет main.xml (res/макет)
В моем AndroidManifest.xml Я зарегистрировал класс MainActivity, который находится в «Проекте библиотеки Android». :
<activity android:name=".MainActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Я могу запустить приложение и отладить onCreate MainActivity.
Теперь моя проблема. Когда я пытаюсь установить содержимое с помощью …
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int resourceId = getResources().getIdentifier("main","layout", getPackageName());
setContentView(ResourceId);
… Я получаю следующую ошибку:
java.lang.NullPointerException
at android.view.ViewGroup.addViewInner(ViewGroup.java:3671)
at android.view.ViewGroup.addView(ViewGroup.java:3543)
at android.view.ViewGroup.addView(ViewGroup.java:3519)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:335)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:325)
at android.app.Activity.setContentView(Activity.java:1944)
Переменная «resourceId » имеет многообещающее значение: 2130903046, но, похоже, она не ссылается на действительный ресурс?
Дополнительная информация: я могу установить LinearLayout, который определен в том же main.xml без проблем:
tbl = (LinearLayout) findViewById(getResourceId("main","id"));
ошибки нет.
Кто-нибудь может мне помочь?
Комментарии:
1. Почему вы не используете R.class ?
2. Я считаю, что, даже если ваша активность находится в вашем проекте библиотеки, вы также должны определить ее в своем другом проекте. Это как-то связано с именами пакетов и всем таким
3. В моем «Проекте библиотеки Android» у меня есть только R.java сгенерировано в com.example.mylib. Нет R.java в моем настоящем имени пакета.
4. В моем основном приложении у меня нет никакого пакета (Packagename). Так что, я думаю, конфликта имен пакетов быть не должно
Ответ №1:
Спасибо всем помощникам и извините, что трачу ваше время. Я нашел проблему.
main.xml должен находиться в Основном приложении. Это единственный ресурс, который должен быть в приложении. Остальные (все ресурсы) могут быть в проекте библиотеки.