Android片段-关于资源R.id.a_项定义的查询

Android片段-关于资源R.id.a_项定义的查询,android,android-fragments,Android,Android Fragments,我正在尝试创建并运行中显示的片段示例 我已经阅读了以下链接 并查看了谷歌资源库 在TitlesFragment.java类中的showDetails()方法中有一行 ft.更换(R.id.a_项目);//ft.replace(int);但是我有以下错误 _项无法解析或不是字段 该如何定义此资源 谢谢。这个id应该是片段的id,因为它发生在片段事务中。replace()。您应该定义id,或者: 在声明片段的布局文件中: 使用 或者将代码中的a_项替换为自定义的int,该值是您定义的常量 也许,

我正在尝试创建并运行中显示的片段示例

我已经阅读了以下链接 并查看了谷歌资源库

在TitlesFragment.java类中的showDetails()方法中有一行 ft.更换(R.id.a_项目);//ft.replace(int);但是我有以下错误

_项无法解析或不是字段

该如何定义此资源


谢谢。

这个id应该是
片段的id,因为它发生在
片段事务中。replace()
。您应该定义id,或者:

  • 在声明片段的布局文件中:
  • 使用
  • 或者将代码中的
    a_项
    替换为自定义的
    int
    ,该值是您定义的常量

    • 也许,这是个错误。答案就在这里

      链接消息的作者建议替换代码片段

      if (index == 0) {
          ft.replace(R.id.details, details);
      } else {
          ft.replace(R.id.a_item, details);
      }
      
      带代码片段

      if (index == 0) {
          ft.add(R.id.details, details);
      } else {
          ft.replace(R.id.details, details);
      }
      
      或者只是

      ft.replace(R.id.details, details);
      

      请注意,这些示例中的大多数已经过时,并且有许多错误。如果您注意到在同一个示例中,他们使用R.id.details使用findFragmentbyID,但没有具有该id的片段,则具有该id的是FrameLayout。还要注意,此示例中使用的API已被弃用

      话虽如此,showDetails方法应该是这样的:

      void showDetails(int index) {
      
              mCurCheckPosition = index;
      
              if (mDualPane) {
                  // We can display everything in-place with fragments, so update
                  // the list to highlight the selected item and show the data.
                  getListView().setItemChecked(index, true);
      
      
                  // Make new fragment to show this selection.
                  DetailsFragment details = DetailsFragment.newInstance(index);
      
                  // Execute a transaction, replacing any existing fragment
                  // with this one inside the frame.
                  FragmentTransaction ft = getFragmentManager().beginTransaction();
      
                  ft.replace(R.id.details, details);                               
                  ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
                  ft.commit();
      
              } else {
                  // Otherwise we need to launch a new activity to display
                  // the dialog fragment with selected text.
                  Intent intent = new Intent();
                  intent.setClass(getActivity(), DetailsActivity.class);
                  intent.putExtra("index", index);
                  startActivity(intent);
              }
          }
      
      可以添加一些额外的代码行,这样,单击已选择的项目就不会执行任何操作,而只会用相同的信息重新创建并替换相同的片段