在Android应用中打开弹出窗口时出现异常

时间:2015-08-20 18:49:24

标签: android popupwindow inflate-exception

尝试调用此方法时,我收到以下异常。

  

MessageQueue回调中的异常:handleReceiveCallback 08-21   00:12:43.454 10843-10843 / common.barter.com.barterapp   E / MessageQueue-JNI:android.view.InflateException:二进制XML文件   第2行:给类增加错误               在android.view.LayoutInflater.createView(LayoutInflater.java:633)               在com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)               在android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)               在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)               在android.view.LayoutInflater.inflate(LayoutInflater.java:482)               在android.view.LayoutInflater.inflate(LayoutInflater.java:414)               在android.view.LayoutInflater.inflate(LayoutInflater.java:365)

public class GlobalHome extends ActionBarActivity{
----------------------
----------------------
private void showLocationPopup() {

    LayoutInflater inflater = (LayoutInflater)
            this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View layout = inflater.inflate(R.layout.popup_location,
            (ViewGroup) findViewById(R.id.layout_location_popup));
    PopupWindow pw = new PopupWindow(
            layout,
            100,
            100,
            true);
    // The code below assumes that the root container has an id called 'main'
    pw.showAtLocation(layout, Gravity.CENTER, 0, 0);

}
}

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:padding="10dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/switch_thumb_material_light"
android:id="@+id/layout_location_popup"
>

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dip"
    android:text="Test Pop-Up"
    />

</LinearLayout>

1 个答案:

答案 0 :(得分:0)

将您的代码更改为:

private void showLocationPopup() {

    LayoutInflater inflater = (LayoutInflater)
            getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View layout = inflater.inflate(R.layout.popup_location,(ViewGroup) getActivity().findViewById(R.id.layout_location_popup));
    PopupWindow pw = new PopupWindow(
            layout,
            100,
            100,
            true);
    // The code below assumes that the root container has an id called 'main'
    pw.setWindowLayoutMode(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    pw.showAtLocation(layout, Gravity.CENTER, 0, 0);

}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:padding="10dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:id="@+id/layout_location_popup">

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dip"
    android:text="Test Pop-Up"/>
</LinearLayout>

我改变了颜色,因为你选择的颜色不起作用。对我来说似乎不是典型的安卓颜色。此外,我已将布局宽度和高度设置为&#39; WRAP_CONTENT&#39;。对我来说,它现在在屏幕中间以白色背景显示正常。

相关问题