gpt4 book ai didi

Android findViewById 为空。已经尝试清理项目,首先设置内容 View

转载 作者:行者123 更新时间:2023-11-29 22:05:42 26 4
gpt4 key购买 nike

帮助!我遇到 findViewById 空返回值问题。我做了很多研究并已经清理了项目,将 setContentView 放在前面,但它仍然失败! xml 布局工作正常,因为如果我将自定义 View 的背景设置为蓝色,则在运行应用程序时 View 将具有预期的蓝色。但我就是不能使用 findViewById

布局 xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<shaotian.android.blackboard.BBView
android:id="@+id/bBView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

</FrameLayout>

自定义 View 类,其父类已经扩展了android的 View 类:

package shaotian.android.blackboard;
import java.util.Observable;
import java.util.Observer;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class BBView extends shaotian.android.blackboard.View {


public BBView(Context context) {
super(context);
// TODO Auto-generated constructor stub
TextView txt=new TextView(context);
this.setBackgroundColor(Color.BLUE);

}
public BBView(Context context, AttributeSet attr)
{super(context);
this.setBackgroundColor(Color.BLUE);
}

public BBView(Context context,AttributeSet attr,int sty)
{
super(context,attr,sty);
this.setBackgroundColor(Color.BLUE);
}


@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
}

public void update(Observable arg0, Object arg1) {
// TODO Auto-generated method stub

}

Activity 类:

package shaotian.android.blackboard;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class BlackBoardActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
BBView view=(BBView)findViewById(R.id.bBView1);

}
}

最佳答案

你在这里调用了错误的 super 构造函数:

public BBView(Context context, AttributeSet attr)
{
super(context);
this.setBackgroundColor(Color.BLUE);
}

应该是:

public BBView(Context context, AttributeSet attr)
{
super(context, attr);
this.setBackgroundColor(Color.BLUE);
}

此外,在 Activity 的粘贴代码中我没有看到 R 的导入,请确保您导入项目的 R 文件,而不是错误地导入 com.android.R。

关于Android findViewById 为空。已经尝试清理项目,首先设置内容 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10812154/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com