我可以根据用户偏好在启动时启动不同的活动吗?

时间:2010-11-02 04:04:08

标签: android

我有一个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。看起来像浪费一样,活动什么都不做,只能启动另一项活动。在我的研究中,我没有找到解决这个问题的方法。任何建议都将不胜感激。

谢谢&amp;问候, 戴夫

3 个答案:

答案 0 :(得分:18)

首先,不要创建第三个活动。只需将LAUNCHER Activity作为列表或地图,然后在调用startActivity()之前让其调用finish() onCreate()需要时setContentView()。这样,大约50%的时间,你正在开展正确的活动。

原则上,您可以让这两项活动都有LAUNCHER <intent-filter>,只启用一项活动。但是,这不适用于桌面快捷方式,这些快捷方式将路由到特定活动(在制作快捷方式时恰好配置的那个)。如果这不关心你,你可能会走这条路。但是,尝试使用一些设备和自定义主屏幕进行测试 - 我不确定是否所有人都会立即接受您的更改。

答案 1 :(得分:5)

我刚刚将以下代码添加到onCreate()方法中,它就像魅力一样。

    Intent intent;

    intent = new Intent(this, MyMap.class);
    startActivity( intent );
    finish();

答案 2 :(得分:0)

对于新朋友(我),以下是dave的回答,以及我需要对AndroidManifest.xml进行的更改。

主要活动:

 Intent intent;

 intent = new Intent(this, DisplayMessageActivity.class);
 startActivity( intent );

更改为xml文件,来自 - &gt; 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>