我尝试做的是在Android中创建一个通知,只要点击它就会打开一个活动。此活动称为" NotificationsActivity"它的父母是" MainActivity"。每当向用户呈现NotificationsActivity时,我希望他们能够按下后退按钮以进入MainActivity。我一直在使用这里的说明(http://developer.android.com/guide/topics/ui/notifiers/notifications.html#DirectEntry)来尝试让它发挥作用。但是,无论我尝试什么,每当我从NotificationsActivity按回来时,应用程序都会完全退出。我能想到的唯一问题是我的应用程序有一个登录屏幕,我还将其识别为MAIN和LAUNCHER。我不认为这会导致问题,但这是我能想到的全部。
总结一下。我想要的是:
但我得到的是:
相关代码显示如下。
来自AndroidManifest.xml:
<activity
android:name=".LoginActivity"
android:label="@string/app_name"
android:launchMode="singleTop"
android:noHistory="true" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
<activity
android:name=".NotificationsActivity"
android:parentActivityName=".MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
这是我的Java代码:
private void notifyRecordChanges(){
String notificationText = "test notification";
Context context = this;
NotificationCompat.Builder builder =
new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_notify)
.setAutoCancel(true)
.setContentText(notificationText);
// Creates an explicit intent for an Activity in your app
Intent resultIntent = new Intent(context, NotificationsActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
// Adds the back stack for the Intent (but not the Intent itself)
stackBuilder.addParentStack(NotificationsActivity.class);
// Adds the Intent that starts the Activity to the top of the stack
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(resultPendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(1, builder.build());
}
编辑:我从项目中删除了LoginActivity类,它没有任何区别。所以,现在我不知道我做错了什么。
第二次编辑: 要添加到Skizo的答案,我必须支持操作栏上的后退按钮。这是处理它的代码。我打电话给#34; goBack&#34;来自Skizo提供的方法覆盖和下面的代码。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case android.R.id.home:
goBack();
break;
}
return super.onOptionsItemSelected(item);
}
private void goBack(){
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
finish();
}
答案 0 :(得分:1)
只需覆盖onBackPressed()
上的NotificationsActivity
。
复制并粘贴此方法:
@Override
public void onBackPressed() {
// super.onBackPressed();
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
finish();
}