如何使用不同的ui从两个单独的图标打开主要活动

时间:2017-06-19 14:32:47

标签: android android-manifest launcher

我有一个应用程序主要活动包括地图。 我想在我的主屏幕启动器上创建两个图标,它们都将打开相同的主要活动,但在地图上使用不同的UI。

例如: 如果我按下图标A,应用程序将在地图上打开一个工厂,如果我按下图标B,应用程序将在地图上没有工厂的情况下打开。

1 个答案:

答案 0 :(得分:2)

首先,您需要向清单添加第二个启动器意图。

        <activity
        android:name=".yourpackage.MapActivity"
        android:launchMode="singleTask"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>

        <meta-data android:name="visibility" android:value="0"/>
    </activity>

    <activity-alias
        android:name=".MapWithoutFabActivity"
        android:targetActivity=".yourpackage.MapActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>

      <meta-data android:name="visibility" android:value="1"/>
    </activity-alias>

接下来,我们需要修改我们的地图MapActivity,以便随时更改fab按钮的可见性。

public class MapActivity extends AppCompatActivity {

   protected int fabVisibility = View.VISIBLE;

   @Override protected void onCreate(@Nullable Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);

       // Hope this method works. 
       Bundle bundle = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA).metaData;
    int visibility = Integer.valueOf(bundle.getString("visibility"));
    fab.setVisibility(visibility);
   }

protected void onNewIntent(Intent intent) {
       Bundle bundle = getPackageManager().getApplicationInfo(getPackageName(), 
       PackageManager.GET_META_DATA).metaData;
       int visibility = Integer.valueOf(bundle.getString("visibility"));
       fab.setVisibility(visibility);
}

祝你好运

埃姆雷