【问题标题】:ADT blank activity created with fragment activity使用片段活动创建的 ADT 空白活动
【发布时间】:2014-03-09 22:38:38
【问题描述】:

我现在真的很困惑,因为每当我创建一个带有空白活动的新 Android 应用程序时,它总是会出现 fragment_main.xml。我只是想创建一个没有片段的空白活动。

在第一张图片中,空白活动带有片段布局:

第二张图片显示了创建的fragment_main

现在我真的很困惑......这只是在将 ADT 更新到最新版本后才发生的。 我已经提到了这个线程:Adt doesn't create default hello world but command line does_

我只想制作一个没有片段视图的空白 Activity 的 Android 应用。

【问题讨论】:

  • 然后把所有片段的东西都删掉,把你不想要的东西去掉。大约需要 60 秒。
  • @GabeSechan 是的,我也这样做了.. 但这是 ADT 的新功能吗?我现在真的很困惑......
  • 这不是一个新功能,在这里阅读更多信息:developer.android.com/guide/components/fragments.html
  • @KaHeL 对我来说是新的,我的意思是以前我只是在做一个空白的活动,只是空白,没有碎片。
  • 如果使用 Android Studio 是一个选项,您应该能够在 Android Studio 0.4.6+ 中解决这个问题(参见链接:google-android-studio.blogspot.com/2013/10/…

标签: android eclipse android-fragments adt


【解决方案1】:

对于那些想了解如何从项目中删除片段的说明:

1) 复制 res/layout/fragment_main.xml 的所有内容。打开activity_main.xml,删除FrameLayout,将复制的内容粘贴进去。

2) 删除fragment_main.xml

3) 在 MainActivity.java 中,删除整个 PlaceHolderFragment 类:

/**
 * A placeholder fragment containing a simple view.
 */
public static class PlaceholderFragment extends Fragment {

    public PlaceholderFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                    Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main,
                    container, false);
        return rootView;
    }
}

4) 从 onCreate() 中删除以下行:

if (savedInstanceState == null) {
    getSupportFragmentManager().beginTransaction()
            .add(R.id.container, new PlaceholderFragment()).commit();
}

此时您应该已准备好运行该项目。

【讨论】:

    【解决方案2】:

    您可以通过编辑 Android SDK 文件夹中的模板文件来使用之前的模板。但是,请确保您备份了“BlankActivity”文件夹。

    • 转到 /templates/tools/templates/activities/BlankActivity

    • 找到 template.xml 文件并找到以下代码

       <parameter
        id="fragmentLayoutName"
        name="Fragment Layout Name"
        type="string"
        constraints="layout|unique|nonempty"
        suggest="fragment_${classToResource(activityClass)}"
        default="fragment_main"
        help="The name of the layout to create for the activity's content fragment" />
      

    并将constraints 更改为constraints="empty"

    • 找到 recipie.xml.ftl 并找到以下代码
      <instantiate from="res/layout/fragment_simple.xml.ftl" to="${escapeXmlAttribute(resOut)}/layout/${fragmentLayoutName}.xml" />
      并评论整行。

    • root/src/app_package 中找到 SampleActivity.java.ftl 文件并删除这两行
      <#include "include_options_menu.java.ftl"> <#include "include_fragment.java.ftl">

      李>
    • root/res/layout 中找到 fragment_simple.xml.ftlactivity_fragment_container.xml.ftl 文件。将 fragment_simple.xml.ftl 文件 的内容复制到 activity_fragment_container.xml.ftl 文件中。

    现在,当您尝试创建新活动时,您将看到此屏幕

    您可以将片段布局名称字段留空。

    在空白活动的情况下,这对我来说很好。我不确定这是否是正确的方法,丢弃片段等等,但这对我有用。

    【讨论】:

    • 出了什么问题?我正在使用相同的设置,它对我有用。
    • 我不知道。appcompat_v7 是否出现在您的项目库中?
    • 不,它没有。我写的答案是建议删除强制的 Fragment 组件。
    • 好吧,伙计!但自从更新后,那些出现在我的项目库中
    • @ChristianBurgos 我不知道您是否解决了有关 appcompat_v7 的问题 .. 如果没有,请查看 this
    【解决方案3】:

    这是 ADT 版本 22.6.0 的新功能: http://developer.android.com/tools/sdk/eclipse-adt.html

    编辑:随着最新的 ADT 更新,有一个名为“Empty Activity”的新模板,它没有片段。这是一个扩展 Activity 的普通类(即使没有默认菜单)。

    请注意,还有一个“空白活动”扩展 ActionBarActivity 并具有片段

    【讨论】:

    • 有什么办法可以恢复吗?
    • 安装以前版本的 ADT 可能是唯一的方法
    • 您可能不想“还原它”。这是开发 android 应用程序的正确和最模块化的方法。即使您只有一个活动,也可以使用 Fragments,一屏永不改变。
    • 同意@MartínMarconcini
    • @MartínMarconcini 你能告诉我为什么这是最好的方法吗?如果我们只有一种布局可以膨胀,这有意义吗?我是这里的新手。对新版本的 adt 有点困惑
    【解决方案4】:

    感谢举报此事的人https://code.google.com/p/android/issues/detail?id=67513

    这是我第一次看到 android-review.googlesource.com。四处挖掘,我没有看到下载补丁集的方法,我不确定如何“樱桃采摘” tools_r22.6,如果有一个解释它的线程,将不胜感激。

    这就是我的做法。

    在您的机器上导航到您的 SDK 文件夹,然后导航到 \tools\templates\activities

    复制 BlankActivity 文件夹并将其粘贴到同一目录中。

    将 BlankActivities_copy 重命名为 EmptyActivities

    转到https://android-review.googlesource.com/#/c/88890/4

    在文件部分下有一个链接列表。每个链接都会将您定向到需要添加到您创建的新 EmptyActivities 文件夹中的 xml。

    将右侧窗格中的 xml 复制到左侧窗格顶部的路径\文件(链接也是路径)。如果文件已存在,请删除内容并替换。如果文件不存在,则创建它并将 xml 复制到文件中。

    对每个链接重复。

    关闭并重新打开 Eclipse。如果您在编辑器中打开任何文件,Eclipse 将崩溃。

    感谢 Google 的 Josiah Gaskin 提供了令人难以置信的 2 天周转时间!

    没有培训文献引用 BlankActivity 中的片段。我确信这个修复为我节省了无数个小时,让我在尝试学习新的 IDE 时弄清楚如何在片段中导航。 再次感谢。

    【讨论】:

    • 啊……终于,谢谢!!但它不会为活动生成 layout.xml 文件。有什么解决办法吗?
    • 在创建活动屏幕上“空活动”应该是一个选项。选择它并单击下一步后,Empty Activity 表单的默认布局名称为“activity_main”,它将在 Eclipse 中显示为 res/layout/activity_main.xml。
    【解决方案5】:

    如果您下载最新的 ADT 22.6.3(使用构建工具 19.0.3),您将可以选择创建一个不使用片段的新 Empty Activity

    【讨论】:

      【解决方案6】:

      我也遇到了同样的问题。 我刚刚删除了 eclipse 并再次从 http://developer.android.com/sdk/index.html#download 下载了 ADT 包 要恢复您以前的项目,只需将工作空间更改为以前的项目。 这对我有用。

      【讨论】:

      • 这样做安全吗?如果我重新安装 eclipse,恐怕我的项目会出现兼容性问题
      • 是的,你可以做到。不会有任何问题,只需要从 SDK 管理器安装您需要的版本即可。
      【解决方案7】:

      如果您不希望片段部分出现在您的应用中,那么只需“取消选中项目设置向导中的 create activity 选项,然后 为您的项目手动创建活动和布局

      【讨论】:

      • 当您尝试通过右键单击包名称并选择 Other->Android Activity 单独(手动)创建新 Activity 时,片段字段仍然出现并需要你来命名它。
      • 创建新项目时,会有一个活动复选框,取消选中即可。稍后您手动创建活动和布局(谷歌知道如何手动创建活动)
      • 我知道如何手动创建一个活动......这只是令人讨厌的事实是你需要手动创建它而不是自动创建它......谢谢顺便说一句!
      • @ShubhN 这就是我所指的,不是使用新项目创建它,而是稍后创建它。我是说,片段字段仍然存在,当您尝试通过右键单击项目名称手动创建活动时。除非您是在谈论首先创建一个新类,然后将更改添加到您的 AndroidManifest.xml,但这似乎需要更多的工作。 stackoverflow.com/questions/3690851/…
      【解决方案8】:

      对此的解决方案是复制%Wherever your ADT bundle is%\sdk\tools\templates\activities\ 中的旧“空白活动”。

      如果有人有它的旧版本,你可以重命名它,把它放在这里%Wherever your ADT bundle is%\sdk\tools\templates\activities\,然后在开始你的项目时,选择这个文件夹而不是“空白活动”,所以如果你有一个副本,请分享。

      【讨论】:

        【解决方案9】:

        我们找到了解决方案:

        创建项目时选择“空”活动。然后它创建一个扩展 Activity 的 MainActivity 类和一个 activity_main.xml 布局。

        换句话说,它给了你以前的行为。

        这在 ADT 22.6.3 中有效。

        【讨论】:

          【解决方案10】:

          在创建新应用程序时, 只需将布局名称复制到片段布局名称(例如activity_main)

          瞧!!! 你得到一个没有片段部分的活动。

          从活动中删除这部分代码:

          if (savedInstanceState == null) {
                  getSupportFragmentManager().beginTransaction()
                          .add(R.id.container, new PlaceholderFragment())
                          .commit();
          

          清理项目。

          【讨论】:

            【解决方案11】:

            一个空白的活动真的应该比这更简单。 似乎目前正在等待修复: https://code.google.com/p/android/issues/detail?id=67513&q=blank%20activity&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars

            您可以在创建项目并手动添加活动时跳过创建活动选项。

            如果你觉得它真的很烦人,你可以尝试回滚 ADT 和 SDK:

            从 dl-ssl.google.com/android/repository/##Your platform's version of the sdk here##

            下载 22.3 sdk 工具

            例如osx是tools_r22.3-macosx.zip

            解压该文件会给你一个名为“工具”的文件夹,用它来替换 /path-to-your-android-installation/android-sdk-macosx/ 中的同名文件夹

            接下来你需要卸载你的 eclipse adt 插件。转到帮助 -> 安装新软件 单击链接查看已安装的内容 选择所有 android 软件包并单击卸载。重启 Eclipse

            http://dl.google.com/android/ADT-22.3.0.zip 下载 22.3 ADT 插件 解压此文件

            回到eclipse点击帮助->安装新软件点击添加选择刚才解压的本地文件勾选要安装的点击安装再次重启eclipse

            【讨论】:

              【解决方案12】:

              我通过将 BlankActivity(22.6.2) 文件夹替换为 android-sdk 的工具/模板目录中的旧 sdk BlankActivity(22.6.1) 来完成。

              【讨论】:

                【解决方案13】:

                不确定这是否完全有效, 脚步 1)右键单击您的项目转到属性-> Android,删除参考库并按应用。 现在您会看到项目中的错误转到 res->values->styles,将 AppBasetheme 的父级替换为 parent="android:Theme.Light" 对除 values_v14 之外的所有值文件夹执行此操作,将 parent="android:Theme.Holo.Light.DarkActionBar"

                2) 现在转到 MainActivity 将“extends ActionBarActivity”替换为“extends Activity”。 Eclipse 会提示你导入活动做它。

                现在删除这部分代码

                public static class PlaceholderFragment extends Fragment {
                
                    public PlaceholderFragment() {
                    }
                
                    @Override
                    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                            Bundle savedInstanceState) {
                        View rootView = inflater.inflate(R.layout.fragment_main, container,
                                false);
                        return rootView;
                    }
                }
                

                来自活动类

                if (savedInstanceState == null) {
                        getSupportFragmentManager().beginTransaction()
                                .add(R.id.container, new PlaceholderFragment()).commit();
                    }
                

                现在删除所有未使用的导入。

                3) 转到res->Layouts->fragment.xml,将fragment的代码复制到activity_main.xml中。 删除fragment.xml。

                现在转到 main.xml 替换这个

                    <item
                    android:id="@+id/action_settings"
                    android:orderInCategory="100"
                    android:title="@string/action_settings"
                    app:showAsAction="never"/>
                

                通过

                    <item
                    android:id="@+id/action_settings"
                    android:orderInCategory="100"
                    android:title="@string/action_settings"
                    android:showAsAction="never"/>
                

                4) 现在点击项目并清理您的项目

                【讨论】:

                  【解决方案14】:

                  对于小型项目,创建一个没有活动的项目并手动添加/编辑活动、布局和清单。

                  【讨论】:

                    【解决方案15】:

                    Android 听到了我们的声音 :)。

                    只需升级或download ADT 版本到 23.0.2 或更高版本。

                    现在你可以像这样选择空白活动,

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2014-12-23
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2014-08-22
                      相关资源
                      最近更新 更多