当前位置: 首页 > 面试题库 >

设置新的内容视图时,应用崩溃

东门晟
2023-03-14
问题内容

编辑:

看来我的按钮样式引起了问题。

编辑代码

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;
        }
    });

出于某些原因,以上代码适用于4.2及更高版本。

将其放在这里供将来的人们使用。

当我尝试将setContentView()方法调用到 布局 时,我的应用程序崩溃了。

我尝试了一些解决方案,当我删除按钮样式时,错误消失了。

看来我在按钮上使用的样式是造成这种情况的原因。

<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>

我的LogCat

01-09 12:04:24.161: D/dalvikvm(20682): html" target="_blank">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

问题答案:

从logcat出现的问题是Button的背景。我认为这是一个很大的形象,所以它溢出了您的记忆。

首先
尝试删除menu_system.xml中的任何@drawable,尤其是Button中的android:background。
如果可以运行,请运行,然后您知道要查找的位置。

第二(用于解决方法)
将背景图像文件
从drawable移至drawable-xhdpi的较大文件夹



 类似资料:
  • 作为快速可视化,这是我的布局: 当我为Coordinator布局设置一个ID()时,应用程序在启动时崩溃,但是删除ID可以让它正常运行。怎么回事?为什么为根视图设置ID会导致应用程序崩溃? 我见过有人用这个findViewById(android.R.id.content)来获取根视图;这是获得rootview的唯一方法吗? 崩溃日志 07-06 18:30:42.253 9385-9385/me

  • 我使用一个线程和支架来下载一些数据,然后用按钮显示一个新的视图,允许你进一步浏览应用程序。但我认为我做错了什么,因为我使用的任何下一个活动都会在setContentView行上出现空指针异常。当我评论这一行时,没有任何问题(所以我猜这意味着该活动在清单中被声明为良好,并正常启动)。由于线程的原因,新活动似乎没有地方设置内容或其他内容。。 } 发生错误的新活动: 导入android.app.活动;导

  • 英文原文:http://emberjs.com/guides/views/built-in-views/ Ember中定义了一套用于构建一些非常基础的控件的视图,比如文本输入框、勾选框和选择列表。 这些视图有: Ember.Checkbox 1 2 3 4 <label> {{view Ember.Checkbox checked=model.isDone}} {{model.title

  • 我是Android的新手,正在开发我的第一个应用程序。我的主要活动(登录活动)没有操作栏,其余所有活动都有操作栏。当我长时间按下编辑文本时,应用程序会与下面提到的logcat崩溃。我无法找出导致此错误的原因。请帮我找到它。 主要活动.java activity_main.xml

  • 7.3.1 视图配置 可配置当前视图的名称,填写备注,及设定要排除的网址查询参数。 关于排除网址查询参数 对于每个视图,在受访页面中,系统将合并此处配置的排除网址查询参数,而不体现在受访页面的后缀参数中。 其中,系统默认排除的网址参数包括 秒针规范,谷歌规范,及系统默认的自定义广告参数规范。具体字段为: mz_ca,mz_sp,mz_sb,mz_kw, utm_content,utm_term,u

  • 我正在Android中创建一个带有导航视图的tabLayout。我想将图标设置到选项卡布局的选项卡上。当我使用setIcon函数时,应用程序抛出一个空指针异常并崩溃。请帮帮我. 在android.app.activityThread.-wrap11(activityThread.java)在android.app.activityThread$H.HandleMessage(activityThr