【问题标题】:Dynamically adding inflated views to ViewFlipper in Android causes NullPointerException在 Android 中向 ViewFlipper 动态添加膨胀视图会导致 NullPointerException
【发布时间】:2011-11-28 14:56:34
【问题描述】:

当我尝试以编程方式将膨胀视图添加到我的 ViewFlipper 时,我收到了 NullPointerException

--onCreate

setContentView(R.layout.event_report);

final LayoutInflater inflater = getLayoutInflater();
mFlipper = (ViewFlipper) findViewById(R.id.eventReportViewFlipper);

final View typeView = inflater
            .inflate(R.layout.event_report_type, null)
mFlipper.addView(typeView, VIEW_TYPE, null); //NullPointerException

-- event_report.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@android:color/darker_gray"
    android:orientation="vertical">
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/background_dark"
        android:gravity="center"
        android:text="@string/eventReportCaption"
        android:textAppearance="?android:attr/textAppearanceLarge"/>
    <ViewFlipper
        android:id="@+id/eventReportViewFlipper"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>
</LinearLayout>

-- event_report_type.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <LinearLayout
        android:id="@+id/eventReportViewTypeUpperLayout"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:orientation="horizontal">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight="1"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight="1"/>
    </LinearLayout>
    <LinearLayout
        android:id="@+id/eventReportViewTypeLowerLayout"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:orientation="horizontal">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight="1"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight="1"/>
    </LinearLayout>
</LinearLayout>

我打算稍后初始化 typeView。

这是我的堆栈跟踪:

11-28 16:59:56.280: E/AndroidRuntime(8604): Caused by: java.lang.NullPointerException
11-28 16:59:56.280: E/AndroidRuntime(8604):     at android.view.ViewGroup$LayoutParams.<init>(ViewGroup.java:3582)
11-28 16:59:56.280: E/AndroidRuntime(8604):     at android.view.ViewGroup$MarginLayoutParams.<init>(ViewGroup.java:3732)
11-28 16:59:56.280: E/AndroidRuntime(8604):     at android.widget.FrameLayout$LayoutParams.<init>(FrameLayout.java:492)
11-28 16:59:56.280: E/AndroidRuntime(8604):     at android.widget.FrameLayout.generateLayoutParams(FrameLayout.java:436)
11-28 16:59:56.280: E/AndroidRuntime(8604):     at android.view.ViewGroup.addViewInner(ViewGroup.java:1984)
11-28 16:59:56.280: E/AndroidRuntime(8604):     at android.view.ViewGroup.addView(ViewGroup.java:1874)
11-28 16:59:56.280: E/AndroidRuntime(8604):     at android.widget.ViewAnimator.addView(ViewAnimator.java:160)
11-28 16:59:56.280: E/AndroidRuntime(8604):     at fi.emicode.flashpoint.EventDialog.onCreate(EventDialog.java:43)

【问题讨论】:

  • 纠正我。你在参数中显式传递 null,然后想知道为什么会有 NullPointerException。

标签: android nullpointerexception viewflipper layout-inflater


【解决方案1】:

这是来自 android 文档的 addView 方法

addView(View child, int index, ViewGroup.LayoutParams params)

VIEW_TYPE 是 int 类型吗?

我认为您应该为添加的视图指定布局参数或仅使用 addView 2个参数

addView(VIEW_TYPE,index);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 2014-08-23
    • 2015-08-05
    • 1970-01-01
    相关资源
    最近更新 更多