在Android中的导航抽屉中手动切换导航选项卡

时间:2015-02-11 15:08:23

标签: android android-fragments navigation-drawer navigationbar

我在我的应用程序中使用最新的Lollipop风格导航抽屉。有关详细信息,请参阅this example。我使用片段显示不同的导航标签。现在,我需要打开,当我点击Android设备中通知栏的某个通知时,让我们说抽屉里的第5项。我被困在如何通过单击通知直接切换到该片段。我非常清楚使用Activity可以做到这一点。任何人都可以建议我解决这个问题吗?

先谢谢。

已解决:

我已经按照Ziem的回答解决了这个问题。我刚刚添加了以下行,将其作为新屏幕打开并清除旧的活动堆栈:

resultIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
                | Intent.FLAG_ACTIVITY_SINGLE_TOP);
resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                | Intent.FLAG_ACTIVITY_CLEAR_TASK);

1 个答案:

答案 0 :(得分:1)

您可以将PendingIntent添加到通知' click

PendingIntent resultPendingIntent;

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
    ...
    .setContentIntent(resultPendingIntent);

接下来,您需要在活动中处理通知Intent

示例:

// How to create notification with Intent:
Intent resultIntent = new Intent(this, MainActivity.class);
resultIntent.putExtra("open", 1);

PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.ic_launcher)
        .setContentTitle("My notification")
        .setContentText("Hello World!")
        .setContentIntent(resultPendingIntent);

int mNotificationId = 33;
NotificationManager mNotifyMgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mNotifyMgr.notify(mNotificationId, mBuilder.build());


//How to handle notification's Intent:
public class MainActivity extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (getIntent() != null && getIntent().hasExtra("open")) {
            int fragmentIndexToOpen = getIntent().getIntExtra("open", -1)
            // show your fragment
        }
    }
}