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

Switch navigation tabs manually in Navigation drawer in Android

我在 app.Please 中使用最新的 Lollipop 样式导航抽屉,请参阅 this example 了解有关 that.I 使用片段显示不同导航选项卡的更多信息。现在,我需要在 android 设备中单击通知栏中的某个通知时打开抽屉中的第 5 个项目。我陷入了如何通过单击通知直接切换到该片段的问题。我非常清楚如何使用 Activity 完成此操作。任何人都可以建议我解决这个问题吗?

提前致谢。

已解决:

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

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

您可以将 PendingIntent 添加到通知的 click:

PendingIntent resultPendingIntent;

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

接下来您需要在 activity.

中处理通知 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
        }
    }
}