Android: Как запустить Activity из заголовка предпочтения?
Я пытаюсь запустить действие из заголовка предпочтения.
Я много искал решение, но не нашел, кроме этого вопроса: начать деятельность с предпочтительных заголовков.
но при применении его ответа я получил новое исключение:
android.content.ActivityNotFoundException: Unable to find explicit activity class {com.package.myapp/com.package.myapp.MyActivity}; have you declared this activity in your AndroidManifest.xml?
Это мой код:
<header
android:icon="@drawable/ic_contacts"
android:title="@string/menuOptionContact">
<intent android:targetPackage="com.package.myapp"
android:targetClass="com.package.myapp.MyActivity" />
</header>
Я пытался изменить код для многих форм, как это: android:targetClass="MyActivity"
Или же android:targetClass=".MyActivity"
все дали мне одно и то же исключение
Я попытался запустить его из соответствующего фрагмента следующим образом:
<header
android:fragment="com.package.myapp.SettingsActivity$ContactPreferenceFragment"
android:icon="@drawable/ic_contacts"
android:title="@string/menuOptionContact">
</header>
и внутри моих фрагментов на создание я положил:
startActivity(new Intent(getActivity(), MyActivity.class));
он запускает действие, но когда я возвращаюсь назад из MyActivity, он переводит меня в пустой фрагмент, а затем мне приходится снова нажимать, чтобы вернуться в настройки SettingsActivity.
Как я могу запустить MyActivity непосредственно из preference-header или избавиться от пустых фрагментов при обратном нажатии?
редактировать
мой AndroidManifest.xml
:
<activity
android:name=".MyActivity"
android:label="@string/app_name">
</activity>
любая помощь будет очень признательна
1 ответ
Прошло много времени, но на тот случай, если кто-то все еще пытается разобраться с этой проблемой, я решил ее следующим образом
<header
android:title="@string/menuOptionContact">
<intent android:action="your custom string"
android:targetClass="com.package.myapp.MyActivity"/>
</header>
в вашем файле манифеста включить следующее:
<activity android:name=".activity.MyActivity"
android:label="@string/my_activity_title"
android:theme="@android:style/Theme.Black.NoTitleBar">
<intent-filter>
<action android:name="your custom string" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
В моем случае ошибка возникает, когда я включаю targetPackage вместе с targetClass, и система в конечном итоге объединяет оба вместе. Согласно руководству разработчика Android, и targetClass, и targetPackage являются синонимами метода intent.setComponent.