使用addView()时我的应用程序崩溃

克雷杰

我是android的菜鸟。每当我使用ViewGroup addView()方法时,我的应用程序都会崩溃,但在使用Activity addContentView()方法时,我的应用程序仍然可以正常工作。

我想使用addView()而不是addContentView()的原因是,我希望能够在不需要时删除布局,而addContentView()则不可能。

程式码:MainActivity.java

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //CAMERA VIEW
    setContentView(R.layout.activity_main);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

    surfaceView = (SurfaceView)findViewById(R.id.surfaceview);
    surfaceHolder = surfaceView.getHolder();
    surfaceHolder.addCallback(this);
    surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

    ViewGroup rootView = (ViewGroup) findViewById(R.layout.activity_main);
    LayoutInflater mLayoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);

    //GRAPHICS VIEW
    glSurfaceView = new GLSurfaceView(this);
    glSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
    glSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
    glSurfaceView.setRenderer(new GLRenderer());
    //crash
    //rootView.addView(glSurfaceView, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
    //not crash
    addContentView(glSurfaceView, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
    glSurfaceView.setZOrderMediaOverlay(true);

    //CONTROLS VIEW
    View ctrlLayout = mLayoutInflater.inflate(R.layout.activity_controls, rootView);
        //crash
        //rootView.addView(ctrlLayout, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
        //not crash
    addContentView(ctrlLayout, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
    ctrlLayout.bringToFront();
    textView = (TextView)ctrlLayout.findViewById(R.id.text);
    rtTextView = (TextView)ctrlLayout.findViewById(R.id.rt_text);
    btnStart = (Button)ctrlLayout.findViewById(R.id.button1);
}

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="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity" >

    <SurfaceView
        android:id="@+id/surfaceview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</RelativeLayout>

activity_controls.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="14dp"
        android:text="@string/hello_world" />

    <TextView
        android:id="@+id/rt_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginRight="18dp"
        android:layout_marginTop="14dp"
        android:text="@string/str_rttext" />

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/rt_text"
        android:layout_centerHorizontal="true"
        android:text="@string/str_title"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <Button
        android:id="@+id/button1"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/btn_start" />

</RelativeLayout>

编辑:

我按照FD_的建议更改了代码

ViewGroup rootView = mLayoutInflater.inflate(R.layout.activity_main,null); 现在,当我在onCreate函数末尾调用setContentView(rootView)时,它崩溃了。

这是logcat:

02-16 08:00:28.142: I/dalvikvm(2153): threadid=1: stack overflow on call to Landroid/view/View;.isLayoutDirectionInherited:Z
02-16 08:00:28.142: I/dalvikvm(2153):   method requires 12+20+4=36 bytes, fp is 0xb02fe320 (32 left)
02-16 08:00:28.152: I/dalvikvm(2153):   expanding stack end (0xb02fe300 to 0xb02fe000)
02-16 08:00:28.152: I/dalvikvm(2153): Shrank stack (to 0xb02fe300, curFrame is 0xb0303ec4)
02-16 08:00:28.152: D/AndroidRuntime(2153): Shutting down VM
02-16 08:00:28.152: W/dalvikvm(2153): threadid=1: thread exiting with uncaught exception (group=0xb1aeab90)
02-16 08:00:28.932: D/dalvikvm(2153): GC_FOR_ALLOC freed 117K, 6% free 3266K/3448K, paused 80ms, total 86ms
02-16 08:00:29.382: D/dalvikvm(2153): GC_FOR_ALLOC freed 356K, 11% free 3423K/3844K, paused 46ms, total 47ms
02-16 08:00:29.402: E/AndroidRuntime(2153): FATAL EXCEPTION: main
02-16 08:00:29.402: E/AndroidRuntime(2153): Process: com.example.previewcamera, PID: 2153
02-16 08:00:29.402: E/AndroidRuntime(2153): java.lang.StackOverflowError
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5713)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetRes
02-16 08:00:29.632: D/dalvikvm(2153): GC_FOR_ALLOC freed 548K, 16% free 3386K/4000K, paused 54ms, total 55ms
FD_

你必须调用setContentView()之前,你可以使用findViewById()你的Activity此外,findViewById()返回包含在内容视图中并由作为参数传递id标识的视图,因此,传递布局资源将永远无法进行。

另一种选择是使用LayoutInflater以下命令自己为View充气

LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
ViewGroup rootView  = inflater.inflate(R.layout.main, null);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用addView()时我的应用程序崩溃

来自分类Dev

当我使用LinearLayout.addView()时,我的Android应用程序崩溃

来自分类Dev

当我使用SupportStreetViewPanoramaFragment时应用程序崩溃

来自分类Dev

使用SherlockFragmentActivity时应用程序崩溃

来自分类Dev

使用startActivityForResult时应用程序崩溃

来自分类Dev

使用 Intent 时应用程序崩溃

来自分类Dev

使用服务Android时,应用程序在关闭时崩溃,因为我试图使用意图

来自分类Dev

当我点击注销时,我的应用程序崩溃

来自分类Dev

当我使用OnClicklistener作为按钮时,即使它为空,我的应用程序也会崩溃

来自分类Dev

当我使用TabLayout时,我的Android Studio应用程序崩溃,该如何解决?

来自分类Dev

JSQMessages:当我使用照片消息时,我的应用程序不断崩溃

来自分类Dev

我的应用程序崩溃了

来自分类Dev

我的Android应用程序的gameLoop线程在退出时崩溃

来自分类Dev

调用getWritableDatabase()时,我的Android应用程序崩溃了;方法

来自分类Dev

我启动意图时Android应用程序崩溃

来自分类Dev

当我单击按钮时,应用程序崩溃

来自分类Dev

每当我注销时应用程序崩溃

来自分类Dev

播放器播放时我的应用程序崩溃

来自分类Dev

打开tablayout活动时我的应用程序崩溃

来自分类Dev

调用动画时我的应用程序崩溃了吗?

来自分类Dev

当我尝试设置onClickListener时,应用程序崩溃

来自分类Dev

从菜单启动设置时,我的应用程序崩溃

来自分类Dev

我的应用程序在单击按钮时崩溃

来自分类Dev

当我移到某个片段时,应用程序崩溃

来自分类Dev

当我的android应用程序崩溃时获取通知

来自分类Dev

我的应用程序在启动时崩溃

来自分类Dev

为什么我的应用程序在更改布局时崩溃?

来自分类Dev

当我回到 TableViewController 时应用程序崩溃

来自分类Dev

我的应用程序开始活动时崩溃

Related 相关文章

  1. 1

    使用addView()时我的应用程序崩溃

  2. 2

    当我使用LinearLayout.addView()时,我的Android应用程序崩溃

  3. 3

    当我使用SupportStreetViewPanoramaFragment时应用程序崩溃

  4. 4

    使用SherlockFragmentActivity时应用程序崩溃

  5. 5

    使用startActivityForResult时应用程序崩溃

  6. 6

    使用 Intent 时应用程序崩溃

  7. 7

    使用服务Android时,应用程序在关闭时崩溃,因为我试图使用意图

  8. 8

    当我点击注销时,我的应用程序崩溃

  9. 9

    当我使用OnClicklistener作为按钮时,即使它为空,我的应用程序也会崩溃

  10. 10

    当我使用TabLayout时,我的Android Studio应用程序崩溃,该如何解决?

  11. 11

    JSQMessages:当我使用照片消息时,我的应用程序不断崩溃

  12. 12

    我的应用程序崩溃了

  13. 13

    我的Android应用程序的gameLoop线程在退出时崩溃

  14. 14

    调用getWritableDatabase()时,我的Android应用程序崩溃了;方法

  15. 15

    我启动意图时Android应用程序崩溃

  16. 16

    当我单击按钮时,应用程序崩溃

  17. 17

    每当我注销时应用程序崩溃

  18. 18

    播放器播放时我的应用程序崩溃

  19. 19

    打开tablayout活动时我的应用程序崩溃

  20. 20

    调用动画时我的应用程序崩溃了吗?

  21. 21

    当我尝试设置onClickListener时,应用程序崩溃

  22. 22

    从菜单启动设置时,我的应用程序崩溃

  23. 23

    我的应用程序在单击按钮时崩溃

  24. 24

    当我移到某个片段时,应用程序崩溃

  25. 25

    当我的android应用程序崩溃时获取通知

  26. 26

    我的应用程序在启动时崩溃

  27. 27

    为什么我的应用程序在更改布局时崩溃?

  28. 28

    当我回到 TableViewController 时应用程序崩溃

  29. 29

    我的应用程序开始活动时崩溃

热门标签

归档