在活动和推出的应用程序中使用ViewPager从URL抛出的异常膨胀 [英] Using ViewPager in activity and launch app from URL inflating Exception thrown

查看:301
本文介绍了在活动和推出的应用程序中使用ViewPager从URL抛出的异常膨胀的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的应用程序在 android.support.v4.widget.DrawerLayout 布局和滑块ViewPager在里面。它工作正常,如果我直接打开应用程序。

但是当我打开的应用程序上点击网​​址洒在的setContentView充气异常(R.layout.activity_main)行。

当我从$ C $删除ViewPager c将其工作正常。

任何解决方案,建议,请我需要它。

或用于显示图像滑块任何其他方式。如何从 URL同时使用开放式的应用程序并显示滑块

先谢谢了。

下面是XML code

activity_main.xml中

 < android.support.v4.widget.DrawerLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    的xmlns:程序=htt​​p://schemas.android.com/apk/res-auto
    的xmlns:工具=htt​​p://schemas.android.com/tool​​s
    机器人:ID =@ + ID / drawer_layout
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    机器人:fitsSystemWindows =真
    工具:openDrawer =开始><包括
    布局=@布局/ app_bar_main
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent/>
<的LinearLayout
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    机器人:方向=垂直>    <的FrameLayout
        机器人:ID =@ + ID / container_body
        机器人:layout_width =FILL_PARENT
        机器人:layout_height =0dp
        机器人:layout_weight =1/>
< / LinearLayout中>
< android.support.design.widget.NavigationView
    机器人:ID =@ + ID / nav_view
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =match_parent
    机器人:layout_gravity =开始
    机器人:fitsSystemWindows =真
    应用:headerLayout =@布局/ nav_header_main
    应用:菜单=@菜单/ activity_main_drawer/>< /android.support.v4.widget.DrawerLayout>

app_bar_main.xml

 < android.support.design.widget.CoordinatorLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
的xmlns:程序=htt​​p://schemas.android.com/apk/res-auto
的xmlns:工具=htt​​p://schemas.android.com/tool​​s
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:fitsSystemWindows =真
工具:上下文=com.iorzb.malik.proximity.MainActivity>
< android.support.design.widget.AppBarLayout
    机器人:layout_width =match_parent
    机器人:layout_height =WRAP_CONTENT
    机器人:主题=@风格/ AppTheme.AppBarOverlay>
    < android.support.v7.widget.Toolbar
        机器人:ID =@ + ID /工具栏
        机器人:layout_width =match_parent
        机器人:layout_height =?ATTR / actionBarSize
        机器人:ATTR / colorPrimary背景=
        应用:popupTheme =@风格/ AppTheme.PopupOverlay/>
< /android.support.design.widget.AppBarLayout>
< android.support.v4.view.ViewPager
    机器人:ID =@ + ID / view_pager
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent/>
< /android.support.design.widget.CoordinatorLayout>

下面就是Java code。

  @覆盖
保护无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_main);
    startService(新意图(这一点,BackgroundService.class));
    工具条工具栏=(栏)findViewById(R.id.toolbar);
    setSupportActionBar(工具栏);
    DrawerLayout抽屉=(DrawerLayout)findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle切换=新ActionBarDrawerToggle(
            对此,抽屉,工具栏,R.string.navigation_drawer_open,R.string.navigation_drawer_close);
    drawer.setDrawerListener(切换);
    toggle.syncState();    NavigationView navigationView =(NavigationView)findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(本);
    navigationView.setItemIconTintList(NULL);
    //图像滑块
    viewPager =(ViewPager)findViewById(R.id.view_pager);
    ImageAdapter适配器=新ImageAdapter(本);
    viewPager.setAdapter(适配器);
    viewPager.setPageTransformer(假,新DepthPageTransformer());
}

下面是堆栈跟踪

  03-05 23:33:08.667 4752-4752 /? E / AndroidRuntime:致命异常:主要
                                             工艺:com.iorzb.malik.proximity,PID:4752
                                             了java.lang.RuntimeException:无法启动活动ComponentInfo {com.iorzb.malik.proximity / com.iorzb.malik.proximity.MainActivity}:android.view.InflateException:二进制XML文件行#28:错误充气类<&不明GT ;
                                                 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2702)
                                                 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767)
                                                 在android.app.ActivityThread.access $ 900(ActivityThread.java:177)
                                                 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1449)
                                                 在android.os.Handler.dispatchMessage(Handler.java:102)
                                                 在android.os.Looper.loop(Looper.java:145)
                                                 在android.app.ActivityThread.main(ActivityThread.java:5951)
                                                 在java.lang.reflect.Method.invoke(本机方法)
                                                 在java.lang.reflect.Method.invoke(Method.java:372)
                                                 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1400)
                                                 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
                                              android.view.InflateException:引起二进制XML文件行#28:错误充气类<&不明GT;
                                                 在android.view.LayoutInflater.createView(LayoutInflater.java:640)
                                                 在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750)
                                                 在android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
                                                 在android.view.LayoutInflater.inflate(LayoutInflater.java:511)
                                                 在android.view.LayoutInflater.inflate(LayoutInflater.java:415)
                                                 在android.view.LayoutInflater.inflate(LayoutInflater.java:366)
                                                 在android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
                                                 在android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
                                                 在com.iorzb.malik.proximity.MainActivity.onCreate(MainActivity.java:43)
                                                 在android.app.Activity.performCreate(Activity.java:6289)
                                                 在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
                                                 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2655)
                                                 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767)
                                                 在android.app.ActivityThread.access $ 900(ActivityThread.java:177)
                                                 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1449)
                                                 在android.os.Handler.dispatchMessage(Handler.java:102)
                                                 在android.os.Looper.loop(Looper.java:145)
                                                 在android.app.ActivityThread.main(ActivityThread.java:5951)
                                                 在java.lang.reflect.Method.invoke(本机方法)
                                                 在java.lang.reflect.Method.invoke(Method.java:372)
                                                 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1400)
                                                 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
                                              java.lang.reflect.InvocationTargetException:产生的原因
                                                 在java.lang.reflect.Constructor.newInstance(本机方法)
                                                 在java.lang.reflect.Constructor.newInstance(Constructor.java:288)
                                                 在android.view.LayoutInflater.createView(LayoutInflater.java:614)
                                                 在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750)
                                                 在android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
                                                 在android.view.LayoutInflater.inflate(LayoutInflater.java:511)
                                                 在android.view.LayoutInflater.inflate(LayoutInflater.java:415)
                                                 在android.view.LayoutInflater.inflate(LayoutInflater.java:366)
                                                 在android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
                                                 在android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
                                                 在com.iorzb.malik.proximity.MainActivity.onCreate(MainActivity.java:43)
                                                 在android.app.Activity.performCreate(Activity.java:6289)
                                                 在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
                                                 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2655)
                                                 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767)
                                                 在android.app.ActivityThread.access $ 900(ActivityThread.java:177)
                                                 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1449)
                                                 在android.os.Handler.dispatchMessage(Handler.java:102)
                                                 在android.os.Looper.loop(Looper.java:145)
                                                 在android.app.ActivityThread.main(ActivityThread.java:5951)
                                                 在java.lang.reflect.Method.invoke(本机方法)
                                                 在java.lang.reflect.Method.invoke(Method.java:372)
                                                 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1400)
                                                 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
                                              java.lang.OutOfMemoryError:引起无法分配与2543448免费字节的6350412字节分配和2MB直到OOM
                                                 在dalvik.system.VMRuntime.newNonMovableArray(本机方法)
                                                 在android.graphics.BitmapFactory.nativeDe $ C $检测板(本机方法)
                                                 在android.graphics.BitmapFactory.de codeStream(BitmapFactory.java:726)
                                                 在android.graphics.BitmapFactory.de codeResourceStream(BitmapFactory.java:547)
                                                 在android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1014)
                                                 在android.content.res.Resources.loadDrawableForCookie(Resources.java:3730)
                                                 在android.content.res.Resources.loadDrawable(Resources.java:3603)
                                                 在android.content.res.Resources.getDrawable(Resources.java:1852)
                                                 在android.content.Context.getDrawable(Context.java:408)
                                                 在android.support.v4.content.ContextCompatApi21.getDrawable(ContextCompatApi21.java:26)
                                                 在android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:321)
                                                 在android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:180)
                                                 在android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
                                                 在android.support.v7.view.menu.MenuItemImpl.getIcon(MenuItemImpl.java:421)
                                                 在android.support.design.internal.NavigationMenu$p$psenter$NavigationMenuAdapter.$p$ppareMenuItems(NavigationMenu$p$psenter.java:505)
                                                 在android.support.design.internal.NavigationMenu$p$psenter$NavigationMenuAdapter.update(NavigationMenu$p$psenter.java:436)
                                                 在android.support.design.internal.NavigationMenu$p$psenter.updateMenuView(NavigationMenu$p$psenter.java:112)
                                                 在android.support.design.widget.NavigationView.inflateMenu(NavigationView.java:241)
                                                 在android.support.design.widget.NavigationView<&初始化GT;(NavigationView.java:169)
                                                在android.support.design.widget.NavigationV


解决方案

当你得到关于通胀的布局错误RuntimeExceptions,你应该深入跟踪,看看是什么错误。

在你的情况你异常的根本原因是最后一丝这是一个OutOfMemoryError。看来,你在你的ViewPager分配大块的内存。也许显示出非常大的图像。

尝试使用较小的图像,或使用前调整它们的大小。

I have a android.support.v4.widget.DrawerLayout layout in my app and a ViewPager in it for slider. it works fine if, i directly open app.

but when i open app on clicking URL it throws inflating Exception on setContentView(R.layout.activity_main) line.

when i remove ViewPager from code it works fine.

Any solution,suggestion please i need it.

or any other way for showing image slider. how i can use both open app from URL and show slider

Thanks in advance.

Here is xml code

activity_main.xml

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

<include
    layout="@layout/app_bar_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <FrameLayout
        android:id="@+id/container_body"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />


</LinearLayout>
<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header_main"
    app:menu="@menu/activity_main_drawer" />

</android.support.v4.widget.DrawerLayout>

app_bar_main.xml

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.iorzb.malik.proximity.MainActivity">
<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">
    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
    android:id="@+id/view_pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
</android.support.design.widget.CoordinatorLayout>

Here is Java code.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    startService(new Intent(this, BackgroundService.class));
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
    navigationView.setItemIconTintList(null);
    //image slider
    viewPager = (ViewPager) findViewById(R.id.view_pager);
    ImageAdapter adapter = new ImageAdapter(this);
    viewPager.setAdapter(adapter);
    viewPager.setPageTransformer(false, new DepthPageTransformer());
}

Here is stacktrace

03-05 23:33:08.667 4752-4752/? E/AndroidRuntime: FATAL EXCEPTION: main
                                             Process: com.iorzb.malik.proximity, PID: 4752
                                             java.lang.RuntimeException: Unable to start activity ComponentInfo{com.iorzb.malik.proximity/com.iorzb.malik.proximity.MainActivity}: android.view.InflateException: Binary XML file line #28: Error inflating class <unknown>
                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2702)
                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767)
                                                 at android.app.ActivityThread.access$900(ActivityThread.java:177)
                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1449)
                                                 at android.os.Handler.dispatchMessage(Handler.java:102)
                                                 at android.os.Looper.loop(Looper.java:145)
                                                 at android.app.ActivityThread.main(ActivityThread.java:5951)
                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                 at java.lang.reflect.Method.invoke(Method.java:372)
                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
                                              Caused by: android.view.InflateException: Binary XML file line #28: Error inflating class <unknown>
                                                 at android.view.LayoutInflater.createView(LayoutInflater.java:640)
                                                 at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750)
                                                 at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:366)
                                                 at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
                                                 at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
                                                 at com.iorzb.malik.proximity.MainActivity.onCreate(MainActivity.java:43)
                                                 at android.app.Activity.performCreate(Activity.java:6289)
                                                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2655)
                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767) 
                                                 at android.app.ActivityThread.access$900(ActivityThread.java:177) 
                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1449) 
                                                 at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                 at android.os.Looper.loop(Looper.java:145) 
                                                 at android.app.ActivityThread.main(ActivityThread.java:5951) 
                                                 at java.lang.reflect.Method.invoke(Native Method) 
                                                 at java.lang.reflect.Method.invoke(Method.java:372) 
                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400) 
                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195) 
                                              Caused by: java.lang.reflect.InvocationTargetException
                                                 at java.lang.reflect.Constructor.newInstance(Native Method)
                                                 at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
                                                 at android.view.LayoutInflater.createView(LayoutInflater.java:614)
                                                 at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750) 
                                                 at android.view.LayoutInflater.rInflate(LayoutInflater.java:813) 
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:511) 
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:415) 
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:366) 
                                                 at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267) 
                                                 at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129) 
                                                 at com.iorzb.malik.proximity.MainActivity.onCreate(MainActivity.java:43) 
                                                 at android.app.Activity.performCreate(Activity.java:6289) 
                                                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) 
                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2655) 
                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767) 
                                                 at android.app.ActivityThread.access$900(ActivityThread.java:177) 
                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1449) 
                                                 at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                 at android.os.Looper.loop(Looper.java:145) 
                                                 at android.app.ActivityThread.main(ActivityThread.java:5951) 
                                                 at java.lang.reflect.Method.invoke(Native Method) 
                                                 at java.lang.reflect.Method.invoke(Method.java:372) 
                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400) 
                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195) 
                                              Caused by: java.lang.OutOfMemoryError: Failed to allocate a 6350412 byte allocation with 2543448 free bytes and 2MB until OOM
                                                 at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
                                                 at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
                                                 at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:726)
                                                 at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:547)
                                                 at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1014)
                                                 at android.content.res.Resources.loadDrawableForCookie(Resources.java:3730)
                                                 at android.content.res.Resources.loadDrawable(Resources.java:3603)
                                                 at android.content.res.Resources.getDrawable(Resources.java:1852)
                                                 at android.content.Context.getDrawable(Context.java:408)
                                                 at android.support.v4.content.ContextCompatApi21.getDrawable(ContextCompatApi21.java:26)
                                                 at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:321)
                                                 at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:180)
                                                 at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
                                                 at android.support.v7.view.menu.MenuItemImpl.getIcon(MenuItemImpl.java:421)
                                                 at android.support.design.internal.NavigationMenuPresenter$NavigationMenuAdapter.prepareMenuItems(NavigationMenuPresenter.java:505)
                                                 at android.support.design.internal.NavigationMenuPresenter$NavigationMenuAdapter.update(NavigationMenuPresenter.java:436)
                                                 at android.support.design.internal.NavigationMenuPresenter.updateMenuView(NavigationMenuPresenter.java:112)
                                                 at android.support.design.widget.NavigationView.inflateMenu(NavigationView.java:241)
                                                 at android.support.design.widget.NavigationView.<init>(NavigationView.java:169)
                                                at android.support.design.widget.NavigationV

解决方案

When you are getting RuntimeExceptions about error in layout inflation, you should drill down the trace to see what is the error.

In your case the root cause of your exception is the last trace which is an OutOfMemoryError. It seems that you are allocating large chunks of memory in your ViewPager. Probably showing very large images.

Try using smaller images, or resize them before using.

这篇关于在活动和推出的应用程序中使用ViewPager从URL抛出的异常膨胀的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆