我正在尝试在导航抽屉图案旁边加入一个主细节流程。我按照this answer中的说明进行操作。这适用于显示一个窗格,但是对于这些步骤,她的说明指出将相关代码添加到MainActivity,在我的例子中是NavigationDrawerActivity:
(5B)从ItemListActivity中复制onCreate的部分代码并粘贴它 在MainActivity中创建onCreate。这部分:
if (findViewById(R.id.item_detail_container) != null) {
// The detail container view will be present only in the
// large-screen layouts (res/values-large and
// res/values-sw600dp). If this view is present, then the
// activity should be in two-pane mode.
mTwoPane = true;
// In two-pane mode, list items should be given the
// 'activated' state when touched.
((ItemListFragment) getFragmentManager()
.findFragmentById(R.id.item_list))
.setActivateOnItemClick(true);
}
(5C)同样从ItemListActivity复制onItemSelected方法并粘贴 它进入MainActivity。您将拥有一个onItemSelected方法 如果你告诉Eclipse“添加未实现的方法”以响应 在步骤5A之后可能出现的错误。如果不这样做,请复制 整个方法。 (这个步骤是为了回答一个问题而编辑的 注释):
if (mTwoPane) {
// In two-pane mode, show the detail view in this activity by
// adding or replacing the detail fragment using a
// fragment transaction.
Bundle arguments = new Bundle();
arguments.putString(ItemDetailFragment.ARG_ITEM_ID, id);
ItemDetailFragment fragment = new ItemDetailFragment();
fragment.setArguments(arguments);
getFragmentManager().beginTransaction()
.replace(R.id.item_detail_container, fragment)
.commit();
} else {
// In single-pane mode, simply start the detail activity
// for the selected item ID.
Intent detailIntent = new Intent(this, ItemDetailActivity.class);
detailIntent.putExtra(ItemDetailFragment.ARG_ITEM_ID, id);
startActivity(detailIntent);
}
这一行:
if(findViewById(R.id.item_detail_container)!= null){
始终为null。我认为我不需要在NavigationDrawerActivity的onCreate方法中使用它,因为在从我的导航菜单中选择该项之前不会创建master-detail片段,但我不确定在哪里放置它。我已经尝试在片段被替换并提交后放置它,但这似乎也不起作用。为清楚起见,我想要实现的是导航菜单,其中大多数片段将成为主要细节类型。如果有任何不清楚的地方,请告诉我。
答案 0 :(得分:0)
您是否在项目中添加了横向布局? Android有 layout-land 资源文件夹,其中包含横向布局。
因此,您需要添加两个布局才能使用该过程。
布局资源文件夹包含要在正常方向使用的布局文件
layout-land 资源文件夹包含横向使用的布局文件
所以,
来自 res / layout 的布局仅包含列表容器列表
来自 res / layout-land 的布局将包括列表容器和 item_detail_container
当没有 res / layout-land 时,Android会从 res / layout 获取横向方向的布局。并且您的布局不包括该视图。这就是为什么你的条件总是为空的。
如果使用包含两个视图的布局添加 res / layout-land ,它将解决您的错误。请检查您的样品。 :)
由于