现在,在任何人说出任何事情之前我都知道这件事以前曾被问过,我在这里看了很多问题而且找不到任何有帮助的东西
在我的自定义视图中,我试图在我的布局文件中找到一个文本视图,它继续返回null。
继承我的代码:
Main.java
public class Main extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView( R.layout.game );
}
.....
CustomView.java
public class CustomView extends SurfaceView
{
TextView MyTextView; // <-- THIS SHOULD BE SET
public CustomView(Context context, AttributeSet attrs)
{
super(context, attrs);
}
Game.XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gamelayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/background">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_gravity="center"
android:orientation="horizontal"
android:layout_weight="0.025">
<TextView
android:id="@+id/MyTextView" // This needs to be found
android:layout_width="0dip"
android:layout_weight="1"
android:textSize="16sp"
android:text="@string/health"
android:layout_height="fill_parent"
android:contentDescription="@string/health"/>
</LinearLayout>
<package.CustomView
....... />
</LinearLayout>
答案 0 :(得分:1)
答案 1 :(得分:0)
仅对视图组内的视图进行引用不会将其添加到视图层次结构中。您需要调用addView(或其关联的方法之一) - 视图将包含在子视图列表中,然后将成为onMeasure,onLayout进程等的一部分。
findViewById以递归方式遍历视图层次结构以查找id,因此视图需要位于要查找的子视图组列表中