2012-12-06 66 views
0

我开发了一个应用程序,其中包含一个主屏幕与文章列表。 如果您点击它,您将访问另一个屏幕中的详细信息。安卓导航按钮上果冻豆

我实现了ActionBarSherlock,所以我使用了“向上”按钮模式进行此活动。

然后我给这个应用程序添加了一个小部件。当你点击小部件时,你直接访问细节活动。

“向上”按钮已按照Google推荐(http://developer.android.com/training/implementing-navigation/ancestral.html)执行。

我的问题是,在API级别15及以下,它完美的作品。它调用下面的代码:

@Override 
public boolean shouldUpRecreateTask(Activity activity, Intent targetIntent) { 
    String action = activity.getIntent().getAction(); 
    return action != null && !action.equals(Intent.ACTION_MAIN); 
} 

但在豆形软糖,使用的代码是:

public boolean shouldUpRecreateTask(Intent targetIntent) { 
    try { 
     PackageManager pm = getPackageManager(); 
     ComponentName cn = targetIntent.getComponent(); 
     if (cn == null) { 
      cn = targetIntent.resolveActivity(pm); 
     } 
     ActivityInfo info = pm.getActivityInfo(cn, 0); 
     if (info.taskAffinity == null) { 
      return false; 
     } 
     return !ActivityManagerNative.getDefault().targetTaskAffinityMatchesActivity(mToken, info.taskAffinity); 
    } catch (RemoteException e) { 
     return false; 
    } catch (NameNotFoundException e) { 
     return false; 
    } 
} 

方法的第一部分检索。如果堆栈必须重新创建应加载的活动信息。

但我还是不明白什么是行:

!ActivityManagerNative.getDefault().targetTaskAffinityMatchesActivity(mToken, info.taskAffinity); 

谁能帮助我在这条线,我真的需要找出如何初始化一切顺利获得正确的?

回答

0

它是一个布尔方法,它必须返回一些东西。如果它需要返回一个真正的布尔变量,它必须这样做!

从官方文档:

Returns true if the app should recreate the task when navigating 'up' 
from this activity by using targetIntent. 

If this method returns false the app can trivially call navigateUpTo(Intent) 
using the same parameters to correctly perform up navigation. 
If this method returns false, the app should synthesize a new task stack by using 
TaskStackBuilder or another similar mechanism to perform up navigation. 

的亲和力表示活动更喜欢哪个任务属于。默认情况下,来自同一个应用程序的所有活动都相互关联。因此,默认情况下,同一应用程序中的所有活动都喜欢处于相同的任务中。但是,您可以修改某个活动的默认关联。在不同应用程序中定义的活动可以共享一个关联,或者可以为同一个应用程序中定义的活动分配不同的任务关联。

+0

我需要关于特定代码的信息,该代码返回true或false,以便能够为正确的情况创建正确的意图。对我来说,你的答案是空的,当然,如果一个方法需要返回一个布尔值,你必须返回一个布尔值... – Seynorth

+0

再次检查我的答案。我从官方文档添加了东西! – Pavlos

+0

我也编辑了我的问题。我知道该方法的目标是什么,我解释说我将它用于上行导航模式。我唯一的问题是如何很好地初始化我的意图或清单或任何其他文件来获得“真正”的价值。 – Seynorth