当我点击通知时,我应该导航到Main2Activity
,当我点击Main2Activity
的后退按钮时,我应该导航回MainActivity
但我会被导航回主页屏幕。
我的代码中有错误吗?
NotificationCompat.Builder noti = new NotificationCompat.Builder(MainActivity.this);
noti.setContentTitle("Message for you!");
noti.setContentText("Hi!!This is message for you");
noti.setSmallIcon(R.drawable.ic_launcher_background);
noti.setTicker("app name:message app");
noti.setAutoCancel(true);
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
TaskStackBuilder taskStackBuilder=TaskStackBuilder.create(MainActivity.this);
taskStackBuilder.addParentStack(MainActivity.class);
taskStackBuilder.addNextIntent(intent);
PendingIntent pendingIntent=
taskStackBuilder.getPendingIntent(1234,PendingIntent.FLAG_UPDATE_CURRENT);
noti.setContentIntent(pendingIntent);
Notification notification=noti.build();
NotificationManager notificationManager = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(1234,notification);
Mainifest.XML文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sainathpawar.notifications">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Main2Activity"
android:parentActivityName=".MainActivity">
<intent-filter>
<action android:name="second_filter" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
答案 0 :(得分:0)
请试试这个
<activity
android:name=".Main2Activity"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
答案 1 :(得分:0)
这是因为你不在堆栈中。您只启动了一项活动。您的默认MainActivity尚未创建或启动。
您可以在OnMenuItemSelected回调中使用android.R.id.home处理后退按钮,并将它们重定向到您想要的任何位置。您可以尝试父母的活动&#34;路线也是如此,但我不确定如何在没有父母背景的情况下从通知启动时启动它。
如果你走那条路,请更新,告诉我们它是否适合你。 否则你也可以轻松使用我的答案。
为清晰而编辑
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
startActivity(Main2Activity.this, MainActivity.class);
return true;
finish();
}
return super.onOptionsItemSelected(item);
}
答案 2 :(得分:0)
taskStackBuilder.getPendingIntent(1234,PendingIntent.FLAG_UPDATE_CURRENT); noti.setContentIntent(的PendingIntent);
上面的编码有错误。如果我们在这里看到请求代码是1234,它与通知方法的ID相同
notificationManager.notify(1234,通知);
所以它导航回主屏幕,因为Android操作系统因为在getPendingIntent中有1234个请求代码而在MainActivity上思考它。
****解决方法是:****将来自1234的 getPendingIntent()方法的requestCode更改为任意随机数我将其更改为0并且对我有效。
答案 3 :(得分:0)
您可以在不PendingIntent
的情况下TaskStackBuilder
实现此目的:
Intent parentIntent = new Intent(this, MainActivity.class);
parentIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
Intent resultIntent = new Intent(this, Main2Activity.class);
final PendingIntent pendingIntent = PendingIntent.getActivities(context, 0,
new Intent[] {parentIntent, resultIntent}, PendingIntent.FLAG_UPDATE_CURRENT);
noti.setContentIntent(pendingIntent);