如何删除支持库(appcompat_v7)[Eclipse]

Alp*_*ode 11 java eclipse android

我最近将我的eclipse和ADT插件更新到了最新版本,并认识到了一些重大变化.每当我创建一个新的Android应用程序项目时,都会出现一个之前不存在的新appcompat_v7库以及一个fragment_main.xml.这是为什么?为什么activity_main.xml文件不再是活动布局的首选,为什么appcompat库现在包含在每个项目中?我试图多次删除eclipse/adt/sdk并从sdk管理器中删除支持库但没有结果!我意识到它与actionbar有关但问题是每当我创建一个新项目时,项目的文件和appcompat_v7文件都会出现红色感叹号,这会阻止我编译/运行应用程序,甚至有时appcompat_v7文件也没有创造,我唯一得到的是损坏的代码这里是一张图片:http://i.stack.imgur.com/XJMfW.png

那我怎么能删除这种依赖,谢谢

Com*_*are 45

这是为什么?

因为Google工程师将这些内容添加到新活动模板中,至少是"BlankActivity".

为什么activity_main.xml文件不再直接用于活动布局

当然欢迎您使用activity_main.xml任何您想要的东西.碰巧Google的当前模板要求您使用片段.Google的模板只是模板.人们可以争辩 - 我强烈地认为"BlankActivity"模板不应该做它正在做的事情.然而,除此之外,它只是一个模板.

为什么appcompat库现在包含在每个项目中?

据推测,他们希望通过一致的操作栏启动您,即使在较旧的API级别上也是如此.

我意识到它与actionbar有关但问题是每当我创建一个新项目时,项目的文件和appcompat_v7文件都会出现红色感叹号,这会阻止我编译/运行应用程序,甚至有时appcompat_v7文件也没有创建,我唯一得到的是损坏的代码

我大约一周前报道了这个问题.

那我怎么能删除这种依赖

步骤1:在Package Explorer中右键单击项目名称,然后选择Properties.在左侧的属性类别列表中单击Android,然后向右下滚动到底部:

Eclipse项目属性,Android类别

步骤2:在您将在属性对话框中看到的附加库项目列表中,您可能会看到类似于上面屏幕截图中显示的"appcompat_v7_6"的条目.您的最后一位数字会有所不同,可能是您的红色X而不是绿色复选标记.无论如何,如果列表中有"appcompat_v7_NNN"条目,请单击它,然后单击列表右侧的"删除"按钮.然后,单击"确定"按钮以关闭对话框.

步骤3:在res/values/styles.xml,将AppBaseThemefrom 的父级更改Theme.AppCompat.Light@android:style/Theme.Light.在res/values-v11/styles.xml,将AppBaseThemefrom 的父级更改Theme.AppCompat.Light@android:style/Theme.Holo.Light.在rest/values-v14/styles.xml变化的父母AppBaseThemeTheme.AppCompat.Light.DarkActionBar@android:style/Theme.Holo.Light.DarkActionBar.请注意,这些值假设您在创建项目时选择了默认的"带有暗动作条的灯光主题" - 您需要对其他任何指令稍作调整.

步骤#4:在res/menu/main/xml,xmlns:app="http://schemas.android.com/apk/res-auto"<menu>元素中删除根元素和app:showAsAction="never"属性<item>.

步骤#5:在您的活动中(例如MainActivity),将活动的父类更改为除了以外的其他类型ActionBarActivity- FragmentActivity将是一个不错的选择,以最大限度地减少您必须立即进行的其他更改的数量.另外,清理您的导入(例如Ctrl-Shift-O).

此时,除了清理项目(项目>清理主菜单)之外,appcompat应该从使用"BlankActivity"模板创建的项目和"无"的"导航类型"中删除这些内容."BlankActivity"模板上的其他模板或导航选项可能需要更多工作.

  • 如果可以的话,我会投票5次. (7认同)
  • 我也赞成这个5次.花了好几个小时试图找到解决方案.他们可以做的最少的事情就是添加一个排除appcompat的选项,并带有非常大胆的警告. (4认同)

Luf*_*ffy 7

解决这些问题的最佳方法:

  1. 首先在项目中,Right click->properties->Android.你可以看到red marked appcompat放入Reference.单击它并删除它.

  2. 删除在Eclipse中创建的fragment_main.xmlAppcompat文件.

  3. 编辑和更改您的activity_main.xml,如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world" />
    
    </RelativeLayout>
    
    Run Code Online (Sandbox Code Playgroud)
  4. res/values/styles.xml中:

    <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Light">
    
        </style>
    
        <!-- Application theme. -->
        <style name="AppTheme" parent="AppBaseTheme">
    
        </style>
    
    </resources>
    
    Run Code Online (Sandbox Code Playgroud)
  5. res/values-v11/styles.xml中,您必须更改如下:

    <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
        </style>
    
    </resources>
    
    Run Code Online (Sandbox Code Playgroud)
  6. res/values-v14/styles.xml中,您必须更改如下:

      <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Light">
        </style>
    
        <style name="AppTheme" parent="AppBaseTheme">
        </style>
    
    </resources>
    
    Run Code Online (Sandbox Code Playgroud)
  7. 像这样更改menu/main.xml:

    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <item
            android:id="@+id/action_settings"
            android:orderInCategory="100"
            android:showAsAction="never"
            android:title="@string/action_settings"/>
    
    </menu>
    
    Run Code Online (Sandbox Code Playgroud)
  8. 最后更改您的MainActivity.java,如下所示:

    import android.app.Activity;
    import android.os.Bundle;
    
    
    public class MainActivity extends Activity {
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
    }
    
    }
    
    Run Code Online (Sandbox Code Playgroud)

LikeWise你必须这样做才能创建一个新项目