我有一個自定義視圖,我把它聲明字了‘main’XML文件中:
<com.app.DrawView
android:id="@+id/my_view"
android:layout_height="match_parent"
android:layout_width="match_parent" />
然後在我的activity中的onCreate方法中:
setContentView(R.layout.main);
顯示自定義視圖這些都很正常。但是我想要做的是給當前視圖傳遞值。所以我試著做了一個實例的自定義視圖:
DrawView drawView = (DrawView) findViewById(R.id.my_view);
然後在DrawView類,我創建了一個方法:
public void setUserData(boolean data){
useEraser = data;
}
現在,我的問題是,在我的activity中,當我想要位DrawView對象訪問這個方法的時候我一直會得到一個NullPointerExeption,就像這樣:
boolean value = true;
drawView.setUserData(value);
錯誤指向drawView.setUserData(value)
這一行。我哪塊有問題?我知道我犯了一個簡單的錯誤,但是它就是想讓我找到他。
我嘗試用一個方法,但是我發現沒法實現。我把
DrawView drawView = (DrawView)findViewById(R.id.my_view);
放在
setContentView(R.layout.main);
前邊。
我知道我碰到的這是一個很簡單的問題。希望大家能幫幫忙。
如果你想要創建一個新的,試試這個,
把一個linearlayout放到你的xml中,作為一個holder
<LinearLayout
android:id="@+id/ln1"
android:layout_width="wrap_content"
android:layout_height="300dp" >
</LinearLayout>
同時在oncreate方法用下邊的:
LinearLayout ln = (LinearLayout)findViewById(R.id.ln1);
com.example.mixed.DrawView dw2 = new DrawView(getApplicationContext());
dw2.setUserData(false);
ln.addView(dw2);
it 如果你把它放到你的布局xml中應該是沒有問題的。