Using ViewPager in activity and launch app from URL inflating Exception thrown

拜拜、爱过 提交于 2019-12-25 04:35:30

问题


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

回答1:


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.



来源:https://stackoverflow.com/questions/35817763/using-viewpager-in-activity-and-launch-app-from-url-inflating-exception-thrown

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!