FindViewByID为CustomView返回null

时间:2011-06-17 09:39:08

标签: android null

我在android中再次遇到findViewById问题。 我的Activity永远不会退出while循环,因为listview始终为null。我已经尝试过重建了。我知道onFinishedInflating方法的视图,但它对我的Activity没有帮助。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.list_with_compass);

    ListWithCompassView lv = (ListWithCompassView) this.findViewById(R.id.compass_list);

    while(lv == null) {
        Log.d("waiting", "waiting1");
        lv = (ListWithCompassView) this.findViewById(R.id.compass_list);
    }
    this.setListView();
}

这是XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/linear_layout_compass" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
    <karsunke.view.ListWithCompassView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:id="@+id/compass_list">
    </karsunke.view.ListWithCompassView>
</LinearLayout>

2 个答案:

答案 0 :(得分:9)

将此构造函数添加到自定义视图类中。

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

答案 1 :(得分:0)

这是一个很长的拍摄,但尝试清理您的项目并重建它。有时我在findviewbyid中无缘无故地收到null,直到我重建我的项目。如果这不能帮助发布自定义类,那么我们可以看到问题是否存在。