2017-03-18 89 views
0

您好我正在開發一個具有兩種類型的用戶的應用程序:管理員和普通用戶;管理員顯然比普通用戶有更多的操作,所以我需要使用動態快捷方式,具體取決於創建快捷方式的用戶。在Android中打開碎片的動態快捷方式

此時一切都已經編纂和工作。但是,在分配Intent時,即使對MainActivity也收到錯誤。

Intent intent = new Intent(); 
intent.setComponent(new ComponentName("com.motusk.Monit", "com.motusk.Monit.activity.MainActivity")); 

shortcut.add(new ShortcutInfo.Builder(this, "ub") 
    .setShortLabel("Location") 
    .setLongLabel("Location") 
    .setIcon(Icon.createWithResource(this, R.drawable.bg)) 
    .setIntent(intent) 
    .build()); 

我也試圖與:

Intent intent = new Intent(this, MainActivity.class); 

但是,在這兩個我得到的錯誤:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.motusk.Monit/com.motusk.Monit.activity.MainActivity}: java.lang.NullPointerException: intent's action must be set

在我需要幫助的是:

1)如何創建一個正確的IntentMainActivity

2)如何知道哪個快捷鍵被按下? (取決於按哪個快捷方式打開某個Fragment的過程將在MainActivity中執行,這就是爲什麼我需要知道哪個快捷方式被按下的原因)。

回答

2

按照錯誤信息,你的意圖必須設置一個行動setAction

intent.setAction("LOCATION_SHORTCUT"); 

就可以檢查你的活動的行動:

String action = getIntent() != null ? getIntent().getAction() : null; 
if ("LOCATION_SHORTCUT".equals(action)) { 
    // Show the correct fragment 
}