在活动和推出的应用程序中使用ViewPager从URL抛出的异常膨胀 [英] Using ViewPager in activity and launch app from URL inflating Exception thrown
问题描述
我在我的应用程序在 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:机器人=http://schemas.android.com/apk/res/android
的xmlns:程序=http://schemas.android.com/apk/res-auto
的xmlns:工具=http://schemas.android.com/tools
机器人: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:机器人=http://schemas.android.com/apk/res/android
的xmlns:程序=http://schemas.android.com/apk/res-auto
的xmlns:工具=http://schemas.android.com/tools
机器人: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屋!