Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-如何在视图组中设置子视图_Java_Android_Eclipse - Fatal编程技术网

Java Android-如何在视图组中设置子视图

Java Android-如何在视图组中设置子视图,java,android,eclipse,Java,Android,Eclipse,有人能帮我学习语法/方法吗?我想在一个视图组中设置一组不同的视图。我的代码在addView方法中失败 不幸的是,我在网上找不到使用ViewGroup类的jack示例(我就是这样学习的) 谢谢大家 public class TileView extends ViewGroup { private TestClass mTestClass; public TileView(Context context, AttributeSet attrs, int defStyle) {

有人能帮我学习语法/方法吗?我想在一个视图组中设置一组不同的视图。我的代码在addView方法中失败

不幸的是,我在网上找不到使用ViewGroup类的jack示例(我就是这样学习的)

谢谢大家

public class TileView extends ViewGroup {
private TestClass mTestClass;
    public TileView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        initViews();
    }
    public TileView(Context context, AttributeSet attrs) {
        super(context, attrs);
        initViews();    
    }
    public void initViews() {
        addView(mTestClass);        
    }
    @Override 
    protected void onLayout(boolean changed, int l, int t, int r, int b) 
    { 
    }
}

public class TestClass extends View{

public TestClass(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

public TestClass(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public TestClass(Context context) {
    super(context);
}

}首先,您应该检查自己的布局xml文件。根据错误信息,第6行错误。第二个问题是您没有在视图组源代码中初始化mTestClass对象。若要获取子视图,可以在视图组中使用getChildAt(int)方法。这是一个简单的例子

int count = getChildCount();

for (int i = 0; i < count; i++) {
    View child = getChildAt(i);
}
int count=getChildCount();
for(int i=0;i

还有,它是完整的源代码吗?我认为您应该在ViewGroup和View instance中实现onMeasure和onLayout方法。

@user432209:使用Eclipse中的
adb logcat
、DDMS或DDMS透视图来检查logcat并查看Java堆栈跟踪,以确定“代码在addView方法中失败”的原因。好的,下面是我得到的。还有更多,但空间有限。08-31 14:05:45.488:ERROR/AndroidRuntime(311):致命异常:main 08-31 14:05:45.488:ERROR/AndroidRuntime(311):java.lang.RuntimeException:无法启动活动组件信息{cmllc.testproject/cmllc.testproject.test}:android.view.InflateException:二进制XML文件行#6:错误膨胀类cmllc.testproject.TileView 08-31 14:05:45.488:错误/AndroidRuntime(311):由以下原因引起:android.view.InflateException:二进制XML文件行#6:膨胀类cmllc.testproject.TileView时出错除了第6行之外,哪里是XML:TileView是视图组…不是视图…这是我的问题吗?public void addView(view child,int index){LayoutParams params=child.getLayoutParams();…}它是ViewGroup中addView(视图子级)方法源的一部分。TestClass实例不是在代码中创建的。我不明白你想做什么。