2 ssummeraw ssummeraw 于 2013.08.30 15:52 提问

访问 included Layout 中 rootview 的 NullPointerException

当我访问included layout中的一个RelativeLayout viewgroup时,获取了 NullPointerexception异常。在代码中它定义为rootlayout,为什么会出错?
date_layout.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

        android:id="@+id/my_layoutroot_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#eeeeee"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin">

            <TextView
                android:id="@+id/date_from1_id"
                style="@style/date_text"
                android:layout_alignParentTop="true"
                android:text="@string/date_from1" />

            <TextView
                android:id="@+id/date_from2_id"
                style="@style/date_text"
                android:layout_alignBaseline="@+id/date_from1_id"
                android:layout_alignBottom="@+id/date_from1_id"
                android:layout_alignParentRight="true"
                android:text="@string/date_To1" />
               <TextView
    </RelativeLayout>

main_layout.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <include layout="@layout/date_layout" android:id="@+id/datelayout_id"></include>"


<FrameLayout
    android:id="@+id/frame_id"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
</FrameLayout>

</LinearLayout>  

我的代码是:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);

        View view = findViewById(R.id.datelayout_id);
          rootlayout = (RelativeLayout)view.findViewById(R.id.my_layoutroot_id);
          rootlayout.setOnclickListener(this);   

2个回答

cj6585256
cj6585256   2013.08.30 17:34
已采纳
rootlayout = (RelativeLayout)view.findViewById(R.id.layoutroot_id);

修改为这样就行了,include 和style文件很像 都是以子的属性为准 相当于java的复写,你在父布局中直接把id本来为my_layoutroot_id修改为了layoutroot_id.

所以可以把子布局中的

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        //android:id="@+id/my_layoutroot_id"//这个可以去掉了
        android:layout_width="wrap_content"
        ..../>
Jave_
Jave_   2013.08.30 15:53

把include里的

android:id="@+id/my_layoutroot_id"

去掉看看,你命名id命名了两次,include里定义了,无需再定义id

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
获得activity的rootview
@NonNull public static FrameLayout getRootFrame(@NonNull Activity activity) { View re = activity.findViewById(android.R.id.content); if (re != null && re instanceof FrameLayout) {
android使用include标签出现nullpointer异常
在使用inlcude时,网上说在include便签中不能带ID,如果带了ID需要用inflate加载要被inlude的这个布局文件,然后再获取这个布局文件上的对象。 我在使用的过程中发现,include标签如果带了ID,那么他包含的布局文件的根节点就不要包含ID,否则出现nullpointer异常。 main.xml     android:id="@+id/parent"
使用Tomcat访问任何JSP页面都报NullPointerException的问题
这个题目可够长的。。不过内容很简短。。今天在做页面的时候,访问所有的JSP页面都会报NullPointerException,实在看不出那里有错。于是在网海搜来搜去,最终得到了下面的解决方法。这是页面报的错误信息:org.apache.jasper.JasperException: java.lang.NullPointerExceptionorg.apache.jasper.servle
获取Fragment中的view
为Fragment中添加事件处理时,肯定要先获取View.
android获取根View的方法
差距是需要时间堆积的,坚持学习、坚持锻炼…… 1、获取上级view的方法汇总 2、方法介绍  2.1、getRootView特例 3、使用场景  3.1、状态栏高度  3.2、标题栏高度  3.3、键盘高度
Qt中使用OpenGL碰到的问题汇总
配置环境 vs2015 + Qt5.9 问题 - GLFW的配置 从官方下载glfw-3.2.1源代码后,通过Cmake默认配置,生成glew.sln,编译生成glfw3.lib,将其和include文件包含到Qt的pro文件中后,编译示例程序时,发生好多link错误:“error LNK2019: 无法解析的外部符号 - **”。 解决办法 在cmake时,将BUILD_SHARED_...
Android - LayoutInflater和inflate方法的用法
在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如 Button、TextView等)。 具体作用: 1、对于一个没有被载入或者想要动态载入的界面,都需要使用Layo
react-native源码分析系列四 ReactRootView
这篇文章分析一下ReactRootView类 主要focus在touch的处理上。 ReactRootView.java public class ReactRootView extends SizeMonitoringFrameLayout implements RootView       /////////***** RootView.java public interface
自定义View-获取界面的rootview
1获取activity or fragment的rootview1.getRootViewgetWindow().getDecorView().getRootView() findViewById(android.R.id.content).getRootView(); 都可以得到 com.android.internal.policy.impl.PhoneWindow$DecorView2
Android中如何优雅地自定义一个View
Android中自定义View的实现比较简单,无非就是继承父类,然后重载方法,即便如此,在实际编码中难免会遇到一些坑,我把自己遇到的一些问题和解决方法总结一下,希望对广大码友们有所帮助。 用xml定义Layout时,Root element 最好使用merge 当我们需要继承一个布局比较复杂的ViewGroup(比较多的是LinearLayout、RelativeLayout)时,通常会用xml