Могу ли я запускать различные действия при запуске в зависимости от пользовательских настроек?
У меня есть ListActivity и MapActivity. Я хотел бы запустить либо одно из этих действий при запуске приложения, которое было выбрано пользователем в окне настроек.
До сих пор единственный способ, с помощью которого я запускал активность при запуске приложения, - указать его в файле манифеста приложения, используя...
<activity android:name=".MyActiivty"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Я думаю, что мне, возможно, придется начинать действие, которое ничего не делает, а смотрит на пользовательские настройки, а затем запускает ListActivity или MapActivity. Кажется, что отходы, чтобы иметь активность, ничего не делают, кроме запуска другой деятельности. В моих исследованиях я не нашел решения этой проблемы. Любые предложения были бы с благодарностью.
Спасибо и с уважением,
Dave
Ответы
Ответ 1
Во-первых, не создавайте третье действие. Просто укажите LAUNCHER
Activity
либо список, либо карту, и позвоните startActivity()
на другой (плюс finish()
) в onCreate()
, прежде чем призывать setContentView()
при необходимости. Таким образом, ~ 50% времени, вы запускаете правильную деятельность.
В принципе, вы могли бы иметь обе операции LAUNCHER
<intent-filter>
, только один. Тем не менее, это не будет работать с ярлыками на рабочем столе, которые будут маршрутизироваться к определенному действию (в зависимости от того, что было настроено при создании ярлыка). Если это вас не касается, вы можете пойти по этому маршруту. Однако попробуйте протестировать его с помощью нескольких устройств и пользовательских домашних экранов - я не уверен, что все сразу подберут ваше изменение.
Ответ 2
Я просто добавил следующий код к методу onCreate(), и он работал как шарм.
Intent intent;
intent = new Intent(this, MyMap.class);
startActivity( intent );
finish();
Ответ 3
для новых людей (меня), следующий ответ dave, плюс изменения, которые мне нужно сделать для AndroidManifest.xml.
Основная деятельность:
Intent intent;
intent = new Intent(this, DisplayMessageActivity.class);
startActivity( intent );
изменяется в xml файл, из → http://developer.android.com/training/basics/firstapp/starting-activity.html
AndroidManifest.xml:
<activity
android:name="com.mycompany.myfirstapp.DisplayMessageActivity"
android:label="@string/title_activity_display_message"
android:parentActivityName="com.mycompany.myfirstapp.MyActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.mycompany.myfirstapp.MyActivity" />
</activity>