Clarence_zsp 2015-10-08 07:33 采纳率: 0%
浏览 605

求大神解答 tabhost+activity跳转页面是屏幕尺寸5.0以上的手机就报错

10-08 02:55:31.704: E/AndroidRuntime(1859): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.visionet.vissapp.activity/com.visionet.vissapp.activity.MyBusinessActivity}: android.view.InflateException: Binary XML file line #24: Error inflating class
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2176)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.app.ActivityThread.startActivityNow(ActivityThread.java:2019)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:749)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.widget.TabHost.setCurrentTab(TabHost.java:413)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.widget.TabHost.setCurrentTabByTag(TabHost.java:287)
10-08 02:55:31.704: E/AndroidRuntime(1859): at com.visionet.vissapp.activity.HomeActivity.onClick(HomeActivity.java:131)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.view.View.performClick(View.java:4424)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.view.View$PerformClick.run(View.java:18383)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.os.Handler.handleCallback(Handler.java:733)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.os.Handler.dispatchMessage(Handler.java:95)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.os.Looper.loop(Looper.java:137)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.app.ActivityThread.main(ActivityThread.java:4998)
10-08 02:55:31.704: E/AndroidRuntime(1859): at java.lang.reflect.Method.invokeNative(Native Method)
10-08 02:55:31.704: E/AndroidRuntime(1859): at java.lang.reflect.Method.invoke(Method.java:515)
10-08 02:55:31.704: E/AndroidRuntime(1859): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
10-08 02:55:31.704: E/AndroidRuntime(1859): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
10-08 02:55:31.704: E/AndroidRuntime(1859): at dalvik.system.NativeStart.main(Native Method)
10-08 02:55:31.704: E/AndroidRuntime(1859): Caused by: android.view.InflateException: Binary XML file line #24: Error inflating class
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.view.LayoutInflater.createView(LayoutInflater.java:620)
10-08 02:55:31.704: E/AndroidRuntime(1859): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
10-08 02:55:31.704: E/AndroidRuntime(1859): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.app.Activity.setContentView(Activity.java:1928)
10-08 02:55:31.704: E/AndroidRuntime(1859): at com.visionet.vissapp.activity.MyBusinessActivity.onCreate(MyBusinessActivity.java:30)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.app.Activity.performCreate(Activity.java:5243)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2140)
10-08 02:55:31.704: E/AndroidRuntime(1859): ... 18 more
10-08 02:55:31.704: E/AndroidRuntime(1859): Caused by: java.lang.reflect.InvocationTargetException
10-08 02:55:31.704: E/AndroidRuntime(1859): at java.lang.reflect.Constructor.constructNative(Native Method)
10-08 02:55:31.704: E/AndroidRuntime(1859): at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.view.LayoutInflater.createView(LayoutInflater.java:594)
10-08 02:55:31.704: E/AndroidRuntime(1859): ... 31 more
10-08 02:55:31.704: E/AndroidRuntime(1859): Caused by: java.lang.OutOfMemoryError
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:575)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:410)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:840)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.content.res.Resources.loadDrawable(Resources.java:2110)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.view.View.(View.java:3545)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.view.ViewGroup.(ViewGroup.java:470)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.widget.LinearLayout.(LinearLayout.java:176)
10-08 02:55:31.704: E/AndroidRuntime(1859): at android.widget.LinearLayout.(LinearLayout.java:172)

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-04 10:44
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题是由Android平台的内存管理机制引起的。当您尝试在Android应用程序中加载大量资源(例如图片、字体等)时,可能会导致内存不足。

    解决方法之一是在使用BitmapFactory.decodeResource()之前,先检查当前的可用内存是否足够加载这些资源。这可以通过在onCreate()方法或init()方法中调用getResources().getAvailableMemory()来实现。

    这是一个示例:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        // 检查当前可用内存
        long availableMemory = getResources().getAvailableMemory();
        if (availableMemory < 500 * 1024 * 1024) { // 500 MB
            Toast.makeText(this, "Insufficient memory", Toast.LENGTH_SHORT).show();
            finish(); // 如果内存不足,则直接退出应用
        }
    }
    

    请注意,这个解决方案只适用于您的特定情况,并可能需要根据您的具体需求进行调整。此外,如果问题仍然存在,请考虑提供更多的上下文信息,以便于为您提供更具体的帮助。

    评论

报告相同问题?

悬赏问题

  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥20 spring boot集成mqtt的使用问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错