【问题标题】:Android studio src/res/layout subfolder errorAndroid studio src/res/layout 子文件夹错误
【发布时间】:2017-06-28 08:28:12
【问题描述】:

StackOverflow Answers

我阅读了那篇文章并尝试在 app/src/main/res/layout/ 中制作子文件夹

我想我做了那个答案中提到的所有事情。

在我的毕业典礼中:

apply plugin: 
apply plugin: 
apply plugin:
apply plugin: 

android {
    // something
    sourceSets {
    main {
        res.srcDirs = getLayoutList("app/src/main/res/layout/")
    }
}
def getLayoutList(path) {
File file = new File(path)
def throwAway = file.path.split("/")[0]
def newPath = file.path.substring(throwAway.length() + 1)
def array = file.list().collect {
    "${newPath}/${it}"
}
def res="src/main/res";
array.push(res);
return array
}

dependencies { ... }

我的目录层次模型(项目)

测试 -- .gradle - 。主意 - 应用程序 - 建造 -- 库 -- 源代码 -- 安卓测试 - 主要的 -- 资产 -- 爪哇 -- 水库 - 布局 -- about_login - 时间表 --activity_main.xml -- AndroidManifest.xml - 测试 - 建造 -- 毕业 -- .gitignore -- ... // 更多设置文件

但是当我同步我的 gradle 时,错误出现并说,index error

def newPath = file.path.substring(throwAway.length() + 1)

在那条线上。请帮帮我。

为什么这是一个不同的问题?

第一。很多人在自己的电脑上工作,但我不能
第二。我认为 String.substring()
之间有关系 第三。我无法解决这个问题。

【问题讨论】:

标签: android android-studio gradle subdirectory


【解决方案1】:

您的项目结构中有一个简单的错误。你需要创建一个layouts目录NOTlayout。所以应该是:

app/src/main/res/layouts/

然后在您的子文件夹中,您需要 create 创建一个 layout 目录。这应该是您的布局文件所在的位置。例如,如果您想要在子文件夹 about_login 中创建 login_activity.xml,则需要创建以下目录:

app/src/main/res/layouts/about_login/layout

所以,login_activity.xml 路径将是:

app/src/main/res/layouts/about_login/layout/login_activity.xml

然后,在您的 app build.gradle 中,您应该添加以下内容:

sourceSets {
    main {
      res.srcDirs =
          [
              'src/main/res', // Try removing this
              'src/main/res/layouts',
              'src/main/res/layouts/about_login',
          ]
    }
}

每次需要创建子文件夹时,还需要创建layout目录,并在layout目录中添加xml布局文件。

那么你的目录层次应该是这样的:

测试 -- .gradle - 。主意 - 应用程序 - 建造 -- 库 -- 源代码 -- 安卓测试 - 主要的 -- 资产 -- 爪哇 -- 水库 -- 布局 -- about_login - 布局 -- login_activity.xml --activity_main.xml -- AndroidManifest.xml - 测试 - 建造 -- 毕业

您可以在下面评论您的以下代码,因为我们不需要它:

def getLayoutList(path) {
File file = new File(path)
def throwAway = file.path.split("/")[0]
def newPath = file.path.substring(throwAway.length() + 1)
def array = file.list().collect {
    "${newPath}/${it}"
}
def res="src/main/res";
array.push(res);
return array
}

【讨论】:

  • 抱歉,迟来的评论和点赞。但是,我还有更多问题。这可能是子文件夹中的子文件夹吗?喜欢src/main/res/layouts/about_login/fragment_id_password/layout??
  • 是的,有可能。我当前的项目正在使用布局中的 3 个子文件夹。但我没有尝试超过这 3 个。
  • 谢谢!!我会弄清楚代码写得很时髦的问题:(
  • 不客气。尝试先评论它,我没有任何用于设置目录布局层次结构的常规代码,只有 sourceSets 部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-13
  • 2015-06-10
  • 2014-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多