错误:android.view.InflateException:二进制XML文件行:错误膨胀类片段

时间:2014-09-01 10:29:49

标签: android xml android-fragments

我根据网络状态加载不同的视图。当网络可用时,我正在加载片段,当网络不可用时,我正在加载图像。代码如下所示

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    if (!isConnectedToNetwork()) {


        setContentView(R.layout.no_internet_connection);
        Toast.makeText(getApplicationContext(), "Not connected to internet. Cannot display the map.", Toast.LENGTH_LONG).show();
    }       
}

@Override

protected void onResume() {
    super.onResume();


    if (isConnectedToNetwork()) {
            setContentView(R.layout.activity_display_map);
            setUpViews();

    } else {
        stopService(new Intent(getApplicationContext(), VoiceLaunchService.class));
        setContentView(R.layout.no_internet_connection);
        Toast.makeText(getApplicationContext(), "Not connected to internet. Cannot display the map.", Toast.LENGTH_LONG).show();
    }
}

private void setUpViews() {

    map = ((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
}

重现错误的步骤:

步骤1:使用连接到互联网的设备启动应用程序。看到地图 步骤2:断开设备与互联网的连接(应用程序被发送到后台)。现在该应用程序显示"没有互联网连接"页面(应用程序被带到前面)。 第3步:现在再次连接到互联网。以下错误显示在下面

java.lang.RuntimeException:无法恢复活动。 android.view.InflateException:二进制XML文件行#2:错误膨胀类片段

我的布局文件如下所示

 <?xml version="1.0" encoding="utf-8"?>
 <fragment xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/map"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:name="com.google.android.gms.maps.MapFragment"/>

我不明白我哪里出错了。我已经浏览了这个网站上的所有解决方案,但都是徒劳的。任何帮助都会感激不尽

1 个答案:

答案 0 :(得分:-1)

使用FragmentActivity扩展您的活动

  1. YourActivity扩展了FragmentActivity
  2. 2.将setUpViews()方法改为

    private void setUpViews() {
     map = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
    }