所以我有一个非常简单的项目。它包含两个活动。主要活动有一个导航抽屉和一个碎片容器。第二个活动仅用于在用户与某个片段交互时显示详细信息。
所以我将主要活动设置为我的第二个活动(称为DetailsPage)的父活动,如下所示:
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".DetailsPage"
android:label="@string/title_activity_details_page"
android:parentActivityName="com.collusion.serviceassistant.MainActivity" >>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.collusion.srviceassistant.MainActivity"/>
</activity>
并在DetailsPage活动代码中我有以下内容:
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
switch (item.getItemId()) {
case R.id.share :
share();
return true;
case R.id.home:
Log.i("BACK", "Going back!");
Intent upIntent = NavUtils.getParentActivityIntent(this);
if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
// This activity is NOT part of this app's task, so create a new
// task
// when navigating up, with a synthesized back stack.
TaskStackBuilder.create(this)
// Add all of this activity's parents to the back stack
.addNextIntentWithParentStack(upIntent)
// Navigate up to the closest parent
.startActivities();
} else {
// This activity is part of this app's task, so simply
// navigate up to the logical parent activity.
NavUtils.navigateUpTo(this, upIntent);
}
return true;
}
return super.onOptionsItemSelected(item);
}
现在看来,通过我的日志,与up动作相关的代码没有被执行。每当我在操作栏中点击插入符号或使用后面的硬件键时,应用程序就会退出。有谁知道我在这里做错了什么?我想知道它是否与详细信息页面活动没有扩展ActionBar类这一事实有关:
public class DetailsPage extends Activity{
有没有人有任何想法?
答案 0 :(得分:1)
根据使用主页按钮导航的Google docs链接,您可能需要使用
android.R.id.home 而不是 R.id.home
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
我认为这可能会解决主页导航问题。