捕捉异常膨胀布局

时间:2012-04-28 21:55:36

标签: android layout exception-handling inflate

我正在尝试充气

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
<Item  android:id="@+id/ltArr"
    android:layout_alignParentLeft="true"
    android:icon="@android:drawable/arrow_up_float"/>
<TextView android:id="@+id/ImText"
    android:layout_toRightOf="@id/ltArr"/>
<Item  android:layout_alignParentRight="true" 
    android:layout_toRightOf="@id/ImText"
     android:icon="@android:drawable/arrow_down_float"/>
</RelativeLayout>

在我调用addTextView的过程中,它位于try catch块

try{
    addTextView("Showtext", intID, addtothisLayout);
    }catch (Exception ex){}

当在addText过程中对上面的布局进行膨胀时,会出现一个上面捕获的异常,执行被发送回调用过程中的catch

void addTextView(String showTxt,integer id,  ViewGroup addtoparent)
{
View itemview = View.inflate(this, R.layout.itemlayout, addtoparent); //this causes the exception
..
..
}

为什么抛出异常时我在ex变量中看不到任何内容?

我在尝试傻事吗?

如何查看异常内容?我已经尝试检查异常ex变量,因为调试器经过它但它没有任何内容。如果我在过程中使用SQL。我特意抛出SQLException,这将允许我看到错误描述,但在这里我不知道该扔什么...?

通过删除try catch子句,我在LogCat中找到了对资源不可用的异常的引用。但是如何在try ex var中捕获这些描述?我是否必须抛出特定的例外情况?

好的,这是我的答案,我试图检查变量的声明,并需要在代码块中放置一些东西。 “ex.toString()”

catch (Exception ex){
            ex.toString();
        }   

感谢大家的快速回复。

2 个答案:

答案 0 :(得分:1)

当我在AVD 2.3.3仿真器上运行时,我得到了:

04-28 22:03:36.537: E/AndroidRuntime(395): java.lang.RuntimeException: Unable to start  activity ComponentInfo{com.android.tests/com.android.tests.TestsActivity}: android.view.InflateException: Binary XML file line #5: Error inflating class Item

即,“项目”不被视为视图。

答案 1 :(得分:0)

如果要扩充整个布局,而不仅仅是其中的视图,则必须使用:

getLayoutInflater().inflate(...

getLayoutInflater()是一个Activity的方法