无法在吐司中显示图像

时间:2011-08-03 17:28:52

标签: android image toast illegalargumentexception

我想在Android中的Toast中显示图像。在我的layout.xml中,我定义了一个LinearLayout'svllid',它包含textview和tablelayout,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#CCCCCC"
    android:weightSum="1" android:id="@+id/llid">
    <EditText  
        android:id="@+id/cpuText"  
        android:hint="Enter cpu" 
        android:layout_height="wrap_content"   
        android:layout_width="fill_parent">  
    </EditText>
    <EditText  
        android:id="@+id/ramText"  
        android:hint="Enter ram" 
        android:layout_height="wrap_content"    
        android:layout_width="fill_parent">  
    </EditText> 
    <EditText  
        android:id="@+id/bandwidthText"  
        android:hint="Enter bandwidth" 
        android:layout_height="wrap_content"    
        android:layout_width="fill_parent">  
    </EditText> 
    <Button  
        android:id="@+id/imageRequestButton"  
        android:layout_height="wrap_content"  
        android:text="Download"   
        android:layout_width="fill_parent" android:onClick="sendImageRequest">  
    </Button>       
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#00FF00"
        android:weightSum="1" android:id="@+id/svllid">
        <TextView android:text="client profile"
            android:id="@+id/profileName"
            android:layout_width="fill_parent"
            android:textStyle="bold"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:background="#000000">
        </TextView> 
        <TableLayout
            android:paddingBottom="3pt"  
            android:background="#0000FF"
            android:layout_width="fill_parent" 
            xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content">
            <TableRow>
                <TextView
                    android:paddingLeft="3pt" 
                    android:paddingTop="3pt" 
                    android:text="Image Name"
                    android:layout_width="150px"
                    android:layout_height="wrap_content" 
                    android:textColor="#FFFFFF"/>
                <TextView
                    android:paddingLeft="3pt" 
                    android:text="blah.png"
                    android:textColor="#FFFFFF"
                    android:layout_width="315px"
                    android:layout_height="wrap_content" android:id="@+id/imageName"/>          
            </TableRow>
            <TableRow>
                <TextView
                    android:paddingLeft="3pt" 
                    android:text="Size"
                    android:layout_width="150px"
                    android:layout_height="wrap_content" 
                    android:textColor="#FFFFFF"/>
                <TextView
                    android:paddingLeft="3pt" 
                    android:text="155kb"
                    android:textColor="#FFFFFF"
                    android:layout_width="300px"
                    android:layout_height="wrap_content" android:id="@+id/imageSize"/>          
            </TableRow> 
            <TableRow>
                <TextView
                    android:paddingLeft="3pt" 
                    android:text="Dimensions"
                    android:layout_width="150px"
                    android:layout_height="wrap_content" 
                    android:textColor="#FFFFFF"/>
                <TextView
                    android:paddingLeft="3pt" 
                    android:text="250 X 150px"
                    android:textColor="#FFFFFF"
                    android:layout_width="300px"
                    android:layout_height="wrap_content" android:id="@+id/imageDimension"/>         
            </TableRow>                         
        </TableLayout>                                          
    </LinearLayout>
</LinearLayout>

我想在Toast中显示ID为 'svllid' 的LinearLayout,并从我的活动代码中显示toast。

现在,在实际的android代码中,我首先调用

setContentView(R.layout.main); 

随后,我从肥皂信息中读取了一张图片。然后我创建了一个ImageView,我想将它插入到LinearLayout的'svllid'中,并在Android Toast中显示LinearLayout。

                Toast imageToast = new Toast(this);
                LinearLayout toastLayout = (LinearLayout) findViewById(R.id.svllid);
                toastLayout.addView(image,1);
                imageToast.setView(toastLayout);
                imageToast.setDuration(Toast.LENGTH_LONG);
                imageToast.show();

但是,它不起作用。我的应用程序因错误而崩溃:

java.lang.IllegalArgumentException: View not attached to window manager

任何想法为什么?

2 个答案:

答案 0 :(得分:1)

我认为您必须使用特定ID作为根布局。您必须将其命名为“toast_layout”或“toast_layout_root”(不确定必须使用哪一个 - 文档在那里稍微有点暧昧,请尝试两者)。

正如Varun所说,你需要将布局放在自己的布局文件中。

阅读Android Doc's and follow the given example.

答案 1 :(得分:-1)

为此,您可以使用自定义Toast显示图像。

参考This