Подтвердить что ты не робот

Могу ли я запускать различные действия при запуске в зависимости от пользовательских настроек?

У меня есть 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

4b9b3361

Ответ 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>