在 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
}
}
}
我在 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
}
}
}