2 login950518 login950518 于 2016.01.31 21:50 提问

Android自定义控件时遇到的奇怪bug:

《第一行代码——Android》第三章 3.4 自定义控件 问题
示例代码需要新建一个布局:title.xml
我进行了如下操作:
(1)
图片说明
(2)
<br>
图片说明

title.xml:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/title_bg"
    android:orientation="horizontal">

    <Button
        android:id="@+id/title_back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="5dip"
        android:background="@drawable/back_bg"
        android:text="Back"
        android:textColor="#000" />

    <TextView
        android:id="@+id/title_text"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:gravity="center"
        android:text="Title Text"
        android:textColor="#fff"
        android:textSize="24sp" />

    <Button
        android:id="@+id/title_edit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="5dip"
        android:background="@drawable/edit_bg"
        android:text="Edit"
        android:textColor="#000"
        />

</LinearLayout>

activity_main.xml:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <include layout="@layout/title"/>
</LinearLayout>

MainActivity.java:

 package com.test.lichee.uicustomviews;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Window;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
    }
}

运行后出现如下报错:

02-02 12:01:38.180 6186-6186/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                 Process: com.test.lichee.uicustomviews, PID: 6186
                                                 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.lichee.uicustomviews/com.test.lichee.uicustomviews.MainActivity}: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2371)
                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2423)
                                                     at android.app.ActivityThread.access$800(ActivityThread.java:155)
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1340)
                                                     at android.os.Handler.dispatchMessage(Handler.java:110)
                                                     at android.os.Looper.loop(Looper.java:193)
                                                     at android.app.ActivityThread.main(ActivityThread.java:5332)
                                                     at java.lang.reflect.Method.invokeNative(Native Method)
                                                     at java.lang.reflect.Method.invoke(Method.java:515)
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825)
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641)
                                                     at dalvik.system.NativeStart.main(Native Method)
                                                  Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
                                                     at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:292)
                                                     at android.app.Activity.requestWindowFeature(Activity.java:3408)
                                                     at com.test.lichee.uicustomviews.MainActivity.onCreate(MainActivity.java:12)
                                                     at android.app.Activity.performCreate(Activity.java:5369)
                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1096)
                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2335)
                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2423) 
                                                     at android.app.ActivityThread.access$800(ActivityThread.java:155) 
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1340) 
                                                     at android.os.Handler.dispatchMessage(Handler.java:110) 
                                                     at android.os.Looper.loop(Looper.java:193) 
                                                     at android.app.ActivityThread.main(ActivityThread.java:5332) 
                                                     at java.lang.reflect.Method.invokeNative(Native Method) 
                                                     at java.lang.reflect.Method.invoke(Method.java:515) 
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825) 
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641) 
                                                     at dalvik.system.NativeStart.main(Native Method) 

可是可以看见,我的MainActivity.java中并没有错,出现了Error信息与实际情况不符合的现象。很奇怪,我认为应该是我创建title时出了问题。


我的引入的图片如下:

图片说明

7个回答

Acmen99
Acmen99   2016.02.03 16:19
已采纳

activity 和 v7包下的AppCompatActivity 去掉title是有区别的!楼主将AppCompatActivity改为Activity或者在AndroidManifest.xml中加个theme

login950518
login950518 已按照您的解决方法测试,成功解决!
2 年多之前 回复
sinat_30616713
sinat_30616713   2016.02.01 10:54

AndroidRuntimeException: requestFeature() must be called before adding content 报错的这句话意思就是requestFeature()方法要在你oncreat的setcontentview之前调用。看你贴的代码并没有问题啊。代码跟错误日志没有对应起来啊

a_running_wolf
a_running_wolf 我也是这儿觉得,但楼主提到BUg,是不是楼主已经知道这个原因依旧改不对?
2 年多之前 回复
login950518
login950518 是啊,我也是这么认为的。我重新编辑了一下问题,您可以再看一下
2 年多之前 回复
crazy1235
crazy1235   Ds   Rxr 2016.01.31 22:00

你的代码跟自定义控件什么关系???

crazy1235
crazy1235 很奇怪,看着是没问题的。你把<include layout="@layout/title"/> 这个删掉试试、
2 年多之前 回复
login950518
login950518 我更新了问题,您可以再看一下。很奇怪,我觉得是我新建title.xml时出的问题,但是竟会报一个不相干的错误。
2 年多之前 回复
crazy1235
crazy1235   Ds   Rxr 2016.01.31 22:00

你的代码跟自定义控件什么关系???

Theresa_zxx
Theresa_zxx   2016.02.01 14:26
huaheshangxo
huaheshangxo   2016.02.02 15:24

将AppCompatActivity改为Activity

huaheshangxo
huaheshangxo 如果使用AppCompatActivity,则将requestWindowFeature(Window.FEATURE_NO_TITLE);改为getSupportActionBar().hide();
2 年多之前 回复
zrf1335348191
zrf1335348191   2016.02.03 14:38

代码顺序问题,改变一下setcontent和request的顺序

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
android开发遇到的各种bug
前言——好记性不如烂笔头,记录Android学习过程中遇到的各种问题BUG。O(∩_∩)O错误1 ——Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x0 错误原因——一般是int 型数据赋给String ,然后让TextView显示就会出现如上错误。解决办法——用String.val
安卓开发中遇到的奇奇怪怪的问题
写这篇文章属于脑中一闪的一个念头,是想着把自己做项目中遇到的一些奇怪问题和解决办法分享出来。因为是现想,所以想到一个在更新一个吧。可能有理解错误的地方,望指出。 1.App的首次安装。 问题描述:在我们安装完成一个app时,在安装界面直接点击打开。我们进入了app的首页,这时我们按home键返回桌面,再点击应用图标,会发现没有直接进入首页,而是先进入了app的闪屏页,在进入首页。重...
有这样一个奇怪bug,让程序员无从下手!你遇见过么?
一说到程序员最敏感的事情,大家都知道是bug,有这么样一个段子,有一部电视剧,所有程序员都不爱看,因为这部电视剧的台词中不停的出现bug(八阿哥)一次,呵呵,虽然bug是程序员的敏感词,但是也是程序员需要经常面对的。时间长了,心态好的程序员就会把解决bug做为一个常态了,有的bug也许几分钟搞定了,有的bug可能需要几个小时,甚至需要几天,不论这些bug解决时间是长还是短,他们都是可以解决的,是有...
Xcode遇到了诡异开发问题
事情是这样, 从开发到测试, 开发的过程中没有出现bug, 但是测试的时候固定重现了bug, 而bug的crash log又不明显, 只是指向了box2d的update中很怪异的问题, 我这里不报错, 对方那里报错, 用排除法吧 1.中转传输导致二进制错误 2.设备差异错误 3.debug和release差异错误考虑第一个问题应该问题不会太大, 通过各种方式传输, 都会出现一样的错误, 于是直
程序开发中那些莫名奇妙的bug
众所周知,程序员的使命,就是不停的编程,调试,测试,直到上线为止。但其中相当一部分时间都花费到调试上,因为我们总会在开发过程中因为不同的环境,不同的编码语言规则,导致我们遇到各种各样的奇葩问题,对于这些问题,当别人发现这些问题时,我们很惊讶的告诉别人,这不可能!或者说要不然你重启下,或者你电脑抽风了吧,实际上,有些问题,是因为我们的个人习惯导致的bug,百分之九十的情况下通过重启根本解决不了任何问题
android一个比较奇葩的bug(不知道是不是bug,很奇葩)
android一个很奇葩的问题,不明原因。
Xcode真机调试bug集(有待更新)
Xcode真机调试出现“*** is busy: Processing symbol files” Xcode真机调试出现“* is busy: Processing symbol files” 引子: Xcode真机调试的时候,点击运行,出现:*** is busy: Processing symbol files。 解决方法: 1、尝试重新拔插测试设备。 2、如果“1
安卓屏幕适配一次奇怪的bug
一个app完成后,我按照如下标准制作了多个icon,并放入了相应的目录: LDPI (Low Density Screen,120 DPI),其图标大小为 36 x 36 px。 MDPI (Medium Density Screen, 160 DPI),其图标大小为 48 x 48 px。 HDPI (High Density Screen, 240 DPI),其图标大小为 72 x 72 px
ANDROID开发中,新手们常常碰到的bug和异常
1.空指针异常 java.lang.NullPointerException 这个异常,是我们在软件开发中最简单,而且最容易犯的错误,一般遇到空指针的时候有如下几种情况: 一.想要使用的控件没有初始化,或者调用了不存在的对象,废话不多说,看代码: public class MainActivity extends AppCompatActivity { private T
当程序不工作时,开发者常用的借口 & 程序员遇到Bug后的30种常见反应
都说态度决定一切,良好的态度也可以成就一名优秀开发者。但在现实生活中,尤其是遇到问题、功能实现失败或不能正常运行时,大家就会开始抱怨或者寻找一些借口,这些借口完全是没用的或者是阻碍你前进的拦路虎。而真正专业的态度应该着眼于项目和团队的积极结果,关注个人和团队的成长,并且围绕当前的工作积极展开各项任务。 本文作者Rajaraman Raghuraman是一名拥有8年开发经验的软件开发人员,他总