小编Mar*_*ler的帖子

android.view.InflateException:二进制XML文件行#12:错误膨胀类<unknown>

我收到了很多在subj中显示的类型的错误.这些错误似乎是偶然的,我无法重现它们.从堆栈我可以了解到我的不同布局资源可能会出现这样的错误.XML的行也在变化.

谁能解释为什么会出现这种错误?我能做些什么来解决这个问题?

=============================================================

com.fsp.android.f generated the following exception:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fsp.android.f/com.life360.android.ui.tour.TourActivity}: android.view.InflateException: Binary XML file line #12: Error inflating class <unknown>

--------- Stack trace ---------
1. android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2649)
2. android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2674)
3. android.app.ActivityThread.access$2200(ActivityThread.java:131)
4. android.app.ActivityThread$H.handleMessage(ActivityThread.java:1975)
5. android.os.Handler.dispatchMessage(Handler.java:99)
6. android.os.Looper.loop(Looper.java:123)
7. android.app.ActivityThread.main(ActivityThread.java:4702)
8. java.lang.reflect.Method.invokeNative(Native Method)
9. java.lang.reflect.Method.invoke(Method.java:521)
10. com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
11. com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
12. dalvik.system.NativeStart.main(Native Method)
-------------------------------

----------- Cause -----------
android.view.InflateException: Binary XML file line #12: Error inflating class <unknown>

1. android.view.LayoutInflater.createView(LayoutInflater.java:513)
2. com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
3. android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
4. android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
5. android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
6. …
Run Code Online (Sandbox Code Playgroud)

xml resources android android-inflate

140
推荐指数
12
解决办法
29万
查看次数

是否使用 if (0) 跳过应该工作的开关中的案例?

我有一种情况,我希望 C++ switch 语句中的两种情况都落入第三种情况。具体来说,第二种情况会落入第三种情况,而第一种情况也会落入第三种情况,而不会经过第二种情况。

我有一个愚蠢的想法,尝试了一下,它奏效了!我将第二个箱子包裹在一个if (0) {... }. 它看起来像这样:

#ifdef __cplusplus
#  include <cstdio>
#else
#  include <stdio.h>
#endif

int main(void) {
    for (int i = 0; i < 3; i++) {
        printf("%d: ", i);
        switch (i) {
        case 0:
            putchar('a');
            // @fallthrough@
            if (0) {        // fall past all of case 1 (!)
        case 1:
            putchar('b');
            // @fallthrough@
            }
        case 2:
            putchar('c');
            break;
        }
        putchar('\n');
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到了所需的输出:

0: ac
1: bc …
Run Code Online (Sandbox Code Playgroud)

c c++ if-statement switch-statement language-lawyer

125
推荐指数
3
解决办法
6259
查看次数

在自定义View类中扩展xml布局

我有一个课程View1延伸View.我想R.layout.test2.xml在这堂课中充气View1.我在这个类中添加了以下代码

public class View1 extends View {

    View view;
    String[] countries = new String[] {"India", "USA", "Canada"};

    public View1( Context context) {
        super(context);
        LayoutInflater  mInflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view=mInflater.inflate(R.layout.test2, null, false);
    }
}
Run Code Online (Sandbox Code Playgroud)

从另一个类Home我希望这个膨胀的视图在某些情况下存在,在Home类中我编写了以下代码:

public class Home extends Activity{

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.home);
        CreateView();   
    }

    public void CreateView() {
        LinearLayout lv=(LinearLayout)findViewById(R.id.linearlayout);
        View1 view = new View1(Home.this);
        lv.addView(view);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行我的项目时,活动并没有向我显示任何内容.

android view android-inflate

35
推荐指数
2
解决办法
4万
查看次数

这是一个clang优化器错误还是C中未定义的行为?

此代码为-O1和-O2提供不同的结果:

/*
    Example of a clang optimization bug.
    Mark Adler, August 8, 2015.

    Using -O0 or -O1 takes a little while and gives the correct result:

        47 bits set (4294967296 loops)

    Using -O2 or -O3 optimizes out the loop, returning immediately with:

        0 bits set (4294967296 loops)

    Of course, there weren't really that many loops.  The number of loops was
    calculated, correctly, by the compiler when optimizing.  But it got the
    number of bits set wrong.

    This is with:

        Apple …
Run Code Online (Sandbox Code Playgroud)

c optimization c99 clang

25
推荐指数
3
解决办法
1933
查看次数

如何防止引用的include搜索当前源文件的目录?

gcc提供了一个-I-选项,在其-I前面的目录-I-中搜索引用的includes(#include "foo.h"),并-I-I-其后面的目录中搜索括号include(#include <foo.h>),以及其他引用的目录包括.

-I-有另一个非常重要的影响.它#include从默认搜索路径中删除所在源文件的目录.通常,带引号的include总是搜索源文件的目录,并任何-I或其他目录之前搜索它. -I-因此,您可以通过删除原则上优先使用的默认路径来指定所需顺序的引用包含文件的确切位置.

所以听起来我回答了我的问题,是吗?不,当我-I-现在使用时,我得到了这个讨厌的图:

cc1: note: obsolete option -I- used, please use -iquote instead
Run Code Online (Sandbox Code Playgroud)

问题是,-iquote不会从搜索路径删除当前目录.无论我提供什么,它仍然总是先搜索-iquote.

所以问题是:如何在-I-不使用的情况下获得相同的效果-I-,哪些已被弃用并最终消失?

阐述:

假设文件布局如下:

srcdir/
    configure
    file1.c
    file2.c
    config.h

builddir/
    Makefile
    file1.o
    file2.o
    config.h
    libpudding.a
Run Code Online (Sandbox Code Playgroud)

由于各种原因,我们无法config.h从中删除srcdir(它将影响其他平台上的构建过程).但是,我们希望将config.hfrom builddir优先包括在in zconf.hsrcdir. …

c gcc include-path

17
推荐指数
1
解决办法
1455
查看次数

如何在Android中从XML扩展视图?

我正在创建一个tableLayout [以XML格式给出]

添加表行[以XML格式创建并在Java中膨胀]

还在表格中添加2个textview [以XML格式创建并在JAVA中进行膨胀]

我只能获得背景和文本颜色,但不能获得宽度,高度和边距等布局属性来获取表格视图.

user-interface android view android-inflate android-tablelayout

13
推荐指数
2
解决办法
3万
查看次数

枚举是否永远不会在API中使用?

我正在使用提供给我的C库.我在编译库时使用的编译器,版本,选项等信息有限.库接口enum在传递的结构中使用它们,并且直接作为传递的参数使用.

问题是:当我编译代码以使用提供的库时,我如何保证或确定我的编译器将使用与enums 相同的大小?如果没有,则结构将不会排列,并且参数传递可能会混乱,例如longint.

我的担忧源于C99标准,该标准规定了以下enum类型:

应与char,有符号整数类型或无符号整数类型兼容.类型的选择是实现定义的,但应能够表示枚举的所有成员的值.

据我所知,只要最大值适合,编译器就可以选择任何类型,它非常有用,有效地随心所欲,不仅可能在编译器之间变化,而且可能在同一编译器和/或编译器选项的不同版本之间变化.它可以选择1,2,4或8字节表示,从而导致结构和参数传递中的潜在不兼容性.(它也可以选择签名或未签名,但我没有看到在这种情况下出现问题的机制.)

我在这里错过了什么吗?如果我没有遗漏某些东西,这是否意味着enum永远不应该在API中使用?

更新:

是的,我错过了什么.虽然语言规范在这里没有帮助,但正如@Barmar所指出的应用程序二进制接口(ABI)所做的那样.或者如果没有,则ABI不足.我的系统ABI确实指定enum必须是带符号的四字节整数.如果编译器不服从,那就是一个bug.给定完整的ABI和兼容编译器,enum 可以在API中安全使用.

c linker enums portability struct

11
推荐指数
1
解决办法
1705
查看次数

如何在C++中声明自引用容器?

对于C中typedef的a struct,我不能这样做:

typedef struct {
    unsigned id;
    node_t *left;
    node_t *right;
} node_t;
Run Code Online (Sandbox Code Playgroud)

因为node_t直到它被定义才知道,所以它不能用在它自己的定义中.有点像Catch-22.但是,我可以使用此变通方法来创建所需的自引用类型:

typedef struct node_s node_t;
struct node_s {
    unsigned id;
    node_t *left;
    node_t *right;
};
Run Code Online (Sandbox Code Playgroud)

同样,我想对引用自身的C++容器做类似的事情:

typedef pair<unsigned, pair<node_t *, node_t * > > node_t;
Run Code Online (Sandbox Code Playgroud)

但是当然,编译器抱怨它node_t在定义之前从未听说过node_t,就像struct typedef上面所说的那样.

那么有没有像这样的解决方法struct?还是一些更好的方法来做到这一点?(不,我不想使用void指针.)

c++ containers typedef self-reference

11
推荐指数
1
解决办法
418
查看次数

如何判断字节数组是否被gzip压缩

如何查看字节数组是否包含gzip流?我的应用程序通过带有Base64编码的http post从其他应用程序获取文件.根据提供文件的应用程序的实现,可以对来自Base64字符串的字节数组进行gzip压缩.如何识别gzipped数组?我找到了一些方法,但我认为当有人上传zip文件或编写"坏"zip文件时会出错

这是我发现和工作的东西,但它可以以某种方式被利用吗?

C#

public static bool IsGZip(byte[] arr)
{
    return arr.Length >= 2 && arr[0] == 31 && arr[1] == 139;
}
Run Code Online (Sandbox Code Playgroud)

VB.NET

Public Shared Function IsGZip(arr As Byte()) As Boolean
    Return arr.Length >= 2 AndAlso arr(0) = 31 AndAlso arr(1) = 139
End Function
Run Code Online (Sandbox Code Playgroud)

如果IsGzip返回true,我的应用程序将解压缩字节数组.

c# vb.net gzip dotnetzip

8
推荐指数
1
解决办法
1992
查看次数

如何在不实际解压的情况下查看 gzip 压缩文件“abc.gz”的内容?

abc.gz如何在不解压的情况下查看 gzip 压缩文件的内容?我试图找到一种无需解压即可查看内容的方法,但我没有找到方法。

unix shell gzip

6
推荐指数
1
解决办法
1万
查看次数