从自定义视图返回值

时间:2011-06-27 10:58:58

标签: android custom-view android-custom-view

我创建了一个扩展ShowWeight的类LinearLayout,它有两个自定义视图作为内部类。我通过main.xml中的XML标记使用此类:

<org.test.ShowWeight  android:id="@+id/sw"..................../>

ShowWeight类中有两个公共变量,其变化值需要在主活动中捕获,主活动使用main.xml作为视图。

我该怎么做? 我在主要活动中试过这个:

ShowWeight sw=(ShowWeight)this.findViewById(R.id.sw);
Log.d("test",sw.getContentDescription().toString());

,这在showWeight类中:

this.setContentDescription(/*required value */);

这导致了NullPointerException

会欣赏一些建议(数据库,静态变量,而非选项)

更新

不幸的是,我不允许发布任何代码,如果我看起来很模糊,我道歉,但我确信ShowWeight类没有改变可能导致问题的任何内容。

我通过XML标记添加到main.xml视图的ShowWeight类看起来很好并且运行正常。

当我在主活动中使用ShowWeight sw=(ShowWeight)this.findViewById(R.id.sw);然后Toast或打印ShowWeight时,我得到'null'。此外,setContentDescription(),getContentDescription()不应该抛出错误,因为我在ShowWeight的XML标记中给出了默认的contentDescription。

1 个答案:

答案 0 :(得分:0)

发布您的ShowWeight课程将有助于我们提供更多帮助。 假设你有这样的课程。

public class ShowWeight extends LinearLayout {

    private Object myObject; 
    public ShowWeight(Context context, AttributeSet attrs)
    {
        super(context, attrs);
        LayoutInflater.from(context).inflate(R.layout.header, this);
    }
    public Object getMyObject()
    {
        return myObject;
    }    
}

并在你的MainActivity.java

ShowWeight sw=(ShowWeight)this.findViewById(R.id.sw);
sw.getMyObject();