关于findViewById返回空指针的错误

============问题描述============

今天遇到一个错误,百度了一下没能解决问题,也许搜索能力有待提高

先把部分代码贴出来

protected void onCreate(Bundle savedInstanceState) {

		Log.v("GameWindow", "onCreate");

		super.onCreate(savedInstanceState);

		setContentView(R.layout.gameview);

//		LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);     

//		View layout = inflater.inflate(R.layout.gameview,null);

//		gameView = (GameView) view.findViewById(R.id.game_sudo_view);

		gameView = (GameView) findViewById(R.id.game_sudo_view);

		if(gameView == null){

			Log.v("gameView", "onCreate->null");

		}

		levelTextView = (TextView)findViewById(R.id.leveltextview);

		levelTextView.setText("Topic."+1));

		if(levelTextView == null){

			Log.v("TextView", "onCreate->null");

		}

	}

下面是gameview.xml

<?xml version="1.0" encoding="utf-8" ?>

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

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:background="@drawable/back">

    

    <ImageView

	    android:layout_width="fill_parent"

	    android:layout_height="wrap_content"

	    android:layout_alignParentBottom="true"

	    android:contentDescription="@string/app_name"

	    android:src="@drawable/grass" />

    

    <com.ljx.gameview.GameView

        android:id="@+id/game_sudo_view"

        android:layout_centerInParent="true"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"/>

    

    <TextView

        android:layout_centerHorizontal="true" 

        android:layout_above="@id/game_sudo_view"

        android:id="@+id/leveltextview"

        android:layout_marginTop="10dp"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"/>

    

</RelativeLayout>

现在问题是,同样在一个布局文件中,textView可以通过findViewById获取,但自定义组件com.ljx.gameview.GameView总是获得空指针

求各路前辈支援,解答

============解决方案1============

findViewByid是在Activity自己的window上查找的。。。

你有那个view的代码吗?

不行就自己动态在代码里创建view好了

时间: 2024-10-12 00:22:46

关于findViewById返回空指针的错误的相关文章

findViewById中NullPointerException的错误

最近在弄一个对话框的登录时,发现一个总是报NullPointerException的错误,折腾了两小时,一直没有发现细小的区别..先上图,一边说明原因 首先是 Activity类中定义的findViewById() * There are two methods almost all subclasses of Activity will implement: * * <ul> * <li> {@link #onCreate} is where you initialize you

【Fragment精深系列5】fragment findViewById()返回null完全解析

一.引入 ??你是不是经常遇到在fragment中调用findViewById方法寻找fragment布局文件中的控件返回null的现象.我之前也遇到了这个问题,虽然后来解决了,但是心中一直有疑惑,最近有时间停下来,结合别人的解答和自己的思考,对这个问题进行彻底的梳理. 二.使用getActivity().findViewById 1.getActivity的介绍 ??Fragment中有一个getActivity()的方法.返回与Fragment关联的Activity对象(通过该对象可以查找a

内核中判断返回指针是否错误方法

内核中判断返回指针是否错误的方法:使用IS_ERR或者IS_ERR_OR_NULL. 参考include/linux/err.h #define MAX_ERRNO  4095 #ifndef __ASSEMBLY__ #define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO) static inline void * __must_check ERR_PTR(long error) { return (void *) e

findViewById返回null

Q:findViewById返回null? A: 代码逻辑错误: 最终,发现错误竟然是在layout文件中把android:id写成了android:name. android:name="@+id/button" 这个也能生成R.id.button,这个得留意了. 经验:字符串 "@+id/xxx" 格式即生成R.id.xxx,不论出现在哪里都行.

ios NSClassFromString 返回空指针

今天新建了一个 iOS 新工程,用到了 NSClassFromString 方法创建类, 无奈总是返回空指针. 花了一下午时间检查代码是否有写错,配置是否有问题,搜索这个问题该怎么解决.无奈都没有什么理想的结论.到了晚上的时候看到一个帖子说 other link flags 里面增加-all_load 属性.我一想,这不靠谱啊. 我以前都没有用过这个属性.我又想到这个工程是新建的,是不是这里面少了什么配置.比较了下以前的工程.增加了-ObjC 这个属性, 再跑一下,成功创建了. 在这里我把这个解

基于返回值的错误处理与异常处理机制

基于返回的错误处理和异常处理机制的比较 一.基于返回值的错误处理机制 对于传统的面向过程语言比如说C语言,通常使用基于返回值的错误处理机制,即通过在程序中定义程序出错时的返回值,比如说0代表操作成功,而1代表操作失败. 这种错误处理机制的好处在于有时候即使出现了异常程序或许也可以继续执行(但是最终执行结果或许不对,而这就导致查错比较困难,因为有时候仅仅通过函数返回值我们并不知道程序出错的原因究竟是什么,比如说程序操作失败返回值为0,我们在控制台上看到程序输出为0,但是除此之外没有其他额外的信息帮

js中的window.open返回object的错误

系统中用javascript中的window.open后,页面返回了一个[object].因为系统的原因,必需使用href="javascript:window.open()"这样的格式.所以只能通过以下办法解决. 解决window.open后返回object的错误 <a href="javascript:void(window.open('','','width=200,height=200'))">window.open()</a> 只在

Retrofit+RxJava 优雅的处理服务器返回异常、错误

开始本博客之前,请先阅读: Retrofit请求数据对错误以及网络异常的处理 异常&错误 实际开发经常有这种情况,比如登录请求,接口返回的 信息包括请求返回的状态:失败还是成功,错误码,User对象等等.如果网络等原因引起的登录失败可以归结为异常,如果是用户信息输入错误导致的登录失败算是错误. 假如服务器返回的是统一数据格式: /** * 标准数据格式 * @param <T> */ public class Response<T> { public int state;

Android Retrofit+RxJava 优雅的处理服务器返回异常、错误

开始本博客之前,请先阅读: Retrofit请求数据对错误以及网络异常的处理 异常&错误 实际开发经常有这种情况,比如登录请求,接口返回的 信息包括请求返回的状态:失败还是成功,错误码,User对象等等.如果网络等原因引起的登录失败可以归结为异常,如果是用户信息输入错误导致的登录失败算是错误. 假如服务器返回的是统一数据格式: /** * 标准数据格式 * @param <T> */ public class Response<T> { public int state;