应用轰然设置新的内容视图时 [英] App crashing when setting new content view

查看:78
本文介绍了应用轰然设置新的内容视图时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

编辑:

看来我的按钮样式都导致了问题。

编辑code

  buttonL.setOnTouchListener(新View.OnTouchListener(){

        公共布尔onTouch(视图V,MotionEvent事件){
            如果(event.getAction()== MotionEvent.ACTION_DOWN)
                buttonL.setBackgroundResource(R.drawable.lights_over);
            如果(event.getAction()== MotionEvent.ACTION_UP || event.getAction()== MotionEvent.ACTION_CANCEL)
                buttonL.setBackgroundResource(R.drawable.lights);
            返回false;
        }
    });
 

在code以上是适用于4.2和因某种原因。

把在这里为未来的人。


当我尝试调用的setContentView()的方法来我的布局我的应用程序崩溃

我尝试了一些解决方案,当我打消了我的风格我的按钮错误就走开了。

看来,我是用我的按钮样式是导致此。

 <选择的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android>
<项目的android:STATE_ pressed =真正的机器人:可绘制=@可绘制/ lights_over/>
<项目安卓state_focused =真正的机器人:可绘制=@可绘制/ lights_over/>
<项目安卓state_selected =真正的机器人:可绘制=@可绘制/ lights_over/>
<项目机器人:可绘制=@可绘制/灯机器人:ID =@ + ID / button_L/>
< /选择器>
 

我的LogCat中

  12月1号至九日:04:24.161:D / dalvikvm(20682):GC_BEFORE_OOM释放9K,5%的游离122880K / 129056K,暂停为20ms,20ms的总
12月一号至九号:04:24.161:E / dalvikvm堆(20682):内存在9027940字节分配。
12月一号至九号:04:24.171:E / AndroidRuntime(20682):致命异常:主要
12月一号至九号:04:24.171:E / AndroidRuntime(20682):java.lang.RuntimeException的:无法启动的活动ComponentInfo {com.androidexample.broadcastreceiver / com.androidexample.broadcastreceiver.StartMenu}:android.view.InflateException:二进制XML文件行#79:错误充气类<未知>
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2246)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2296)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.app.ActivityThread.access $ 700(ActivityThread.java:151)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1281)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.os.Handler.dispatchMessage(Handler.java:99)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.os.Looper.loop(Looper.java:137)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.app.ActivityThread.main(ActivityThread.java:5293)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在java.lang.reflect.Method.invokeNative(本机方法)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在java.lang.reflect.Method.invoke(Method.java:511)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1102)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在dalvik.system.NativeStart.main(本机方法)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):android.view.InflateException:二进制XML文件中的行#79:产生的原因错误充气类<未知>
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.view.LayoutInflater.createView(LayoutInflater.java:619)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.view.LayoutInflater.onCreateView(LayoutInflater.java:666)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.view.LayoutInflater.rInflate(LayoutInflater.java:752)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.view.LayoutInflater.inflate(LayoutInflater.java:495)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.view.LayoutInflater.inflate(LayoutInflater.java:397)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.view.LayoutInflater.inflate(LayoutInflater.java:353)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:327)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.app.Activity.setContentView(Activity.java:1928)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在com.androidexample.broadcastreceiver.StartMenu.onCreate(StartMenu.java:20)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.app.Activity.performCreate(Activity.java:5250)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2210)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):11 ...更多
12月一号至九号:04:24.171:E / AndroidRuntime(20682):由:java.lang.reflect.InvocationTargetException
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在java.lang.reflect.Constructor.constructNative(本机方法)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在java.lang.reflect.Constructor.newInstance(Constructor.java:417)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.view.LayoutInflater.createView(LayoutInflater.java:593)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):25 ...更多
12月一号至九号:04:24.171:E / AndroidRuntime(20682):由:java.lang.OutOfMemoryError
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.graphics.BitmapFactory.nativeDe $ C $检测板(本机方法)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.graphics.BitmapFactory.de codeStream(BitmapFactory.java:596)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.graphics.BitmapFactory.de codeResourceStream(BitmapFactory.java:444)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:817)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.content.res.Resources.loadDrawable(Resources.java:2854)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.content.res.Resources.getDrawable(Resources.java:1521)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:173)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:921)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.graphics.drawable.Drawable.createFromXml(Drawable.java:858)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.content.res.Resources.loadDrawable(Resources.java:2839)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):在android.content.res.TypedArray.getDrawable(TypedArray.java:602)
。十二月一日至九日:04:24.171:E / AndroidRuntime(20682):在android.view.View< INIT>(View.java:3460)
。十二月一日至九日:04:24.171:E / AndroidRuntime(20682):在android.widget.TextView< INIT>(TextView.java:791)
。十二月一日至九日:04:24.171:E / AndroidRuntime(20682):在android.widget.Button< INIT>(Button.java:107)
。十二月一日至九日:04:24.171:E / AndroidRuntime(20682):在android.widget.Button< INIT>(Button.java:103)
12月一号至九号:04:24.171:E / AndroidRuntime(20682):28 ...更多
 

解决方案

从logcat的问题是你的按钮的背景。我认为这是莫名其妙的大图像,溢出了你的记忆。

第一
尝试删除任何@drawable在menu_system.xml尤其是安卓背景按钮
运行您如果是工作,那么,你知道去哪里找。

秒(解决方法)
将您的背景图像文件,以更大的文件夹
从绘制到绘制-xhdpi

Edit:

It seems my button styles are causing the issue.

Edit Code

buttonL.setOnTouchListener(new View.OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {
            if(event.getAction()==MotionEvent.ACTION_DOWN)
                buttonL.setBackgroundResource(R.drawable.lights_over);
            if(event.getAction()==MotionEvent.ACTION_UP || event.getAction()==MotionEvent.ACTION_CANCEL)
                buttonL.setBackgroundResource(R.drawable.lights);
            return false;
        }
    });

The code above is what works for 4.2 and up for some reason.

Putting it here for future people.


My app is crashing when I try to call the setContentView() method to my layout.

I tried a few solutions and when I removed my styles for my buttons the error went away.

It seems that the styles I am using for my buttons is causing this.

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/lights_over" />
<item android:state_focused="true" android:drawable="@drawable/lights_over" />
<item android:state_selected = "true" android:drawable = "@drawable/lights_over" />
<item android:drawable = "@drawable/lights" android:id="@+id/button_L"/>
</selector>

My LogCat

01-09 12:04:24.161: D/dalvikvm(20682): GC_BEFORE_OOM freed 9K, 5% free 122880K/129056K, paused 20ms, total 20ms
01-09 12:04:24.161: E/dalvikvm-heap(20682): Out of memory on a 9027940-byte allocation.
01-09 12:04:24.171: E/AndroidRuntime(20682): FATAL EXCEPTION: main
01-09 12:04:24.171: E/AndroidRuntime(20682): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.androidexample.broadcastreceiver/com.androidexample.broadcastreceiver.StartMenu}: android.view.InflateException: Binary XML file line #79: Error inflating class <unknown>
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2246)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2296)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.app.ActivityThread.access$700(ActivityThread.java:151)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.os.Looper.loop(Looper.java:137)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.app.ActivityThread.main(ActivityThread.java:5293)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at java.lang.reflect.Method.invokeNative(Native Method)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at java.lang.reflect.Method.invoke(Method.java:511)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at dalvik.system.NativeStart.main(Native Method)
01-09 12:04:24.171: E/AndroidRuntime(20682): Caused by: android.view.InflateException: Binary XML file line #79: Error inflating class <unknown>
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.view.LayoutInflater.createView(LayoutInflater.java:619)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:666)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:752)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.view.LayoutInflater.inflate(LayoutInflater.java:495)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:327)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.app.Activity.setContentView(Activity.java:1928)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at com.androidexample.broadcastreceiver.StartMenu.onCreate(StartMenu.java:20)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.app.Activity.performCreate(Activity.java:5250)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2210)
01-09 12:04:24.171: E/AndroidRuntime(20682):    ... 11 more
01-09 12:04:24.171: E/AndroidRuntime(20682): Caused by: java.lang.reflect.InvocationTargetException
01-09 12:04:24.171: E/AndroidRuntime(20682):    at java.lang.reflect.Constructor.constructNative(Native Method)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.view.LayoutInflater.createView(LayoutInflater.java:593)
01-09 12:04:24.171: E/AndroidRuntime(20682):    ... 25 more
01-09 12:04:24.171: E/AndroidRuntime(20682): Caused by: java.lang.OutOfMemoryError
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:817)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.content.res.Resources.loadDrawable(Resources.java:2854)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.content.res.Resources.getDrawable(Resources.java:1521)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:173)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:921)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.graphics.drawable.Drawable.createFromXml(Drawable.java:858)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.content.res.Resources.loadDrawable(Resources.java:2839)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.view.View.<init>(View.java:3460)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.widget.TextView.<init>(TextView.java:791)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.widget.Button.<init>(Button.java:107)
01-09 12:04:24.171: E/AndroidRuntime(20682):    at android.widget.Button.<init>(Button.java:103)
01-09 12:04:24.171: E/AndroidRuntime(20682):    ... 28 more

解决方案

From logcat the problem is background of your Button. I think it's somehow big image so it overflow your memory.

First
Try to remove any @drawable in menu_system.xml especially android:background in Button
Run your if it's work then you know where to look.

Second(for workaround)
Move your background image file to bigger folder
from drawable to drawable-xhdpi

这篇关于应用轰然设置新的内容视图时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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