插入应用程序时出现 NullPointerException:布局_行为 [重复]

Posted

技术标签:

【中文标题】插入应用程序时出现 NullPointerException:布局_行为 [重复]【英文标题】:NullPointerException when insert app: layout _ behavior [duplicate] 【发布时间】:2016-01-05 20:27:24 【问题描述】:

我正在 android Studio 中开发一个应用程序。 当我创建一个新的空白活动时,默认情况下 content_main.xml 中有这一行

app:layout_behavior="@string/appbar_scrolling_view_behavior"

这一行破坏了我的布局预览。 从 1.2 更新到 1.4 后发生 在设备或模拟器上运行应用程序就可以了。

我会在事件日志中得到这个 NullPointerException

null
java.lang.NullPointerException
    at com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel.hasAlphaChannel(AndroidDesignerEditorPanel.java:1386)
    at com.android.tools.idea.rendering.multi.RenderPreview.createErrorThumbnail(RenderPreview.java:769)
    at com.android.tools.idea.rendering.multi.RenderPreview.tryRenderSync(RenderPreview.java:606)
    at com.android.tools.idea.rendering.multi.RenderPreview.renderSync(RenderPreview.java:531)
    at com.android.tools.idea.rendering.multi.RenderPreviewManager$3.run(RenderPreviewManager.java:1382)
    at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
    at com.intellij.util.Alarm$Request$1.run(Alarm.java:351)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at com.intellij.util.concurrency.QueueProcessor$RunnableConsumer.consume(QueueProcessor.java:298)
    at com.intellij.util.concurrency.QueueProcessor$RunnableConsumer.consume(QueueProcessor.java:295)
    at com.intellij.util.concurrency.QueueProcessor$2$1.run(QueueProcessor.java:110)
    at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
    at com.intellij.util.concurrency.QueueProcessor$2.consume(QueueProcessor.java:107)
    at com.intellij.util.concurrency.QueueProcessor$2.consume(QueueProcessor.java:104)
    at com.intellij.util.concurrency.QueueProcessor$3$1.run(QueueProcessor.java:215)
    at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
    at com.intellij.util.concurrency.QueueProcessor$3.run(QueueProcessor.java:212)
    at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:400)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
    at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:56)

我还在预览中看到以下错误消息,在 API 19 上,而不是在 API 22 上。

Rendering Problems The graphics preview in the layout editor may not be accurate: 
- PorterDuff Color Filters are not supported.

我清理并重建了项目,还重新安装了 SDK

这行代码对xml文件有什么影响?

【问题讨论】:

@Marian 关于这个主题有任何更新吗?我今天将 Android Studio 更新到 1.4 并创建了一个新项目。我目前只创建布局并且我遇到了同样的问题:/我相信它可能与我没有呈现的布局有关,但我除了RelativeLayout、ViewPager和一个按钮之外什么都没有。跨度> 【参考方案1】:

解决方案太简单了! 那个小虫子导致了我的异常。 工具:showIn="@layout/lay_main" 它显然应该指 工具:showIn="@layout/lay_main.xml" 这个问题给我带来了太多的时间,而我从中学到的结果 几乎为零。 不知道是我导致该错误还是 Android Studio

更新: 我刚刚创建了一个新项目,我必须一直使用“xml”才能使渲染工作。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_
    android:layout_ android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/activity_test" tools:context="com.mathlife.mathlife.calculator.Test">

</RelativeLayout>

这只是一个新项目。 如果我将 xml 广告到工具:showIn,渲染效果很好! 不知道是什么原因造成的。

【讨论】:

你应该接受它作为正确答案然后:)【参考方案2】:

休息并返回后,我设法解决了这个问题,尽管我知道这可能不是你的解决方案。

就我而言,正如我之前在评论中所说,我的布局中的组件之一是 ViewPager 元素。但是,我是这样声明的:

<ViewPager
    android:layout_
    android:layout_/>

我是这样声明的,因为我使用的是 API +14,所以我没有想到我做错了什么(因为我没有看到需要使用支持库)。 Android Studio 也没有警告我。多次重启后才告诉我ViewPager无法识别,所以我决定按预期在布局中声明:

<android.support.v4.view.ViewPager
    android:layout_
    android:layout_/>

进行此更改并按下Refresh 按钮后,它按预期呈现了布局,并且在项目中未发现其他错误。

希望它可能会有所帮助。如果不是为了你,为了另一个可能偶然发现这个话题的人。

【讨论】:

为此干杯。但是我对我的问题的解决方案要简单得多。不知道是我做的还是 Android Studio 做的

以上是关于插入应用程序时出现 NullPointerException:布局_行为 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

插入应用程序时出现 NullPointerException:布局_行为 [重复]

数据库插入时出现 NullPointerException [重复]

Hibernate:10个或更多用户同时插入记录时出现异常

使用 PHP 将数据插入 MySQL 数据库时出现问题

MS-SQL 2012 中的 C# Dapper 加载程序在插入时出现死锁

当 Spring Batch 插入 BATCH_JOB_EXECUTION 时出现 BadSqlGrammarException