2017-06-19 64 views
0

我有一個主要活動包括地圖的應用程序。 我想在我的主屏幕啓動器上創建兩個圖標,它們都會打開相同的主要活動,但在地圖上使用不同的用戶界面。如何從兩個不同的UI使用不同的圖標打開主要活動

例如: 如果我按下圖標A,應用程序將在地圖上打開一個晶圓廠,如果我按下圖標B,應用程序將在地圖上沒有晶圓廠的情況下打開。

+0

只是處理的Fab的可見性消失了,可見不同的圖標按或你可以在一個活動的兩個碎片,並推出根據您的圖標上按需要 –

+0

嘗試檢查了這一點https://developer.android.com/guide/topics/ui/shortcuts.html似乎是你想要的,但它是最新版本,我認爲 – Cruces

+0

我不知道這是否工作,但這也似乎是你需要什麼https://stackoverflow.com/questions/43361498/android-quick-shortcuts-passing-intent-extraor-some-data-in-shortcutsx毫升 – Cruces

回答

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以準備更改晶圓廠按鈕的可見性。

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); 
} 

祝您好運了

埃姆雷

+0

修復了一些失敗。請再次檢查 –

+0

如果應用程序已經打開,它會從前一個屏幕重新啓動。意思是,如果您使用圖標A打開應用程序,則如果您單擊B,屏幕A會在應用程序顯示之前的狀態時顯示。 – Eselfar

+0

他們都將被打開堆疊。他們是獨立的。 –

相關問題