在我的应用程序中收到通知后,单击它打开活动B。活动B有一个父活动A。下面是清单:
<activity
    android:name="com.evapp.activities.B"
    android:label="@string/title_activity_B"
    android:parentActivityName="com.evapp.activities.A"
    android:screenOrientation="portrait" >
    <!-- Parent activity meta-data to support 4.0 and lower -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.evapp.activities.A" />
</activity>在活动B中,我启用了up功能(活动操作的条形图附近的左箭头),下面是代码:
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    getActionBar().setDisplayHomeAsUpEnabled(true);
    ...问题是,如果活动B是通过单击通知打开的(活动A不是带来活动B的那个),那么当单击图标时,应用程序就关闭了。我想把它打开,这是家长的活动,可以吗?还是应该用活动B中的startActivity()来做呢?
更新1-我添加了以下代码:
@Override
public boolean onOptionsItemSelected(MenuItem item) 
{
   switch (item.getItemId()) 
   {
       case android.R.id.home:
            Intent upIntent = NavUtils.getParentActivityIntent(this);
            if (NavUtils.shouldUpRecreateTask(this, upIntent))
            {
                TaskStackBuilder.create(this)
                    .addNextIntentWithParentStack(upIntent)
                    .startActivities();
            } 
            else 
            {
                NavUtils.navigateUpTo(this, upIntent);
            }
            return true;谢谢
发布于 2016-09-07 16:49:47
如果@Manish Mulimani的解决方案对您有效,那么请随意忽略此信息。它对我不起作用,我也没有尝试过OP中的代码,但是这里有一个替代解决方案,如果这两个方案都不适合您的话:
首先,正如OP所做的那样,在AndroidManifest.xml中指定父活动:
<activity
    android:name=".DetailActivity"
    android:label="@string/activity_detail"
    android:parentActivityName=".MainActivity" >
    <!-- Parent activity meta-data to support 4.0 and lower -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value=".MainActivity" />
</activity>然后,在为显示通知而编写的代码中,执行以下操作:
/* The Intent you want to open when your notification is clicked */
Intent detailIntent = new Intent(context, DetailActivity.class);
/* If you have some extras or a URI, set it here for the DetailActivity */
detailIntent.setData(todaysWeatherUri);
/*
 * This Intent is the one that goes back to your MainActivity when the up 
 * arrow or back button is clicked from the DetailActivity. 
 */
Intent backToMain = new Intent(context, MainActivity.class);
PendingIntent resultPendingIntent =
        TaskStackBuilder.create(context)
                .addNextIntentWithParentStack(backToMain)
                .addNextIntent(detailIntent)
                .getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);   我已经测试了每一次迭代的开始活动,我可以瘦身,它完美地工作!希望它能帮到你。
https://stackoverflow.com/questions/23328367
复制相似问题