其可能的原因之一是物件本身不存在,例如下列程式中的button物件。
public class HelloActivity extends Activity {
TextView tv;
Button button;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv=(TextView) findViewById(R.id.Text01);
button.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
tv.setText("Hello");
}
});
}
}
在上面程式中,定義一個Button的物件,命名為button,但宣告只是建立物件的指標,而非該物件已經是真實地存在,您必須使用findViewById()函式來連繫存在資源檔內的按鈕物件才行。
button = (Button) findViewById(R.id.Button01);
老師請問一下
回覆刪除程式裡面有一段onClick(View v)
那個View是什麼呢?
View v 給onClick 又是做什麼的呢
找了很多資料似乎都沒有說的很清楚
View是視域物件,就是您在畫面上可以看到的物件,如按鈕、文字框等。至於onClick為何要給View物件,是用來告訴您按鈕動作發生在那個物件上,您不妨試著使用v.setText("Click");指令,您就會瞭解。
回覆刪除老師,v是視域物件我了解了
回覆刪除還有疑問就是
但如果有兩個按鍵
view v似乎沒明確指定我在使用哪個
程式也能了解我是在按哪個按鍵
不曉得他是如何判斷的
您可以使用getId ()函式,一般會配合switch指令來使用,每個視域物件若要經由程式控制都要指定ID, 如本篇文章中的R.id.Button01就代表按鈕物件的ID。
回覆刪除R.id.Button01已經指定Button01 給button了
回覆刪除再用View v告訴您按鈕動作發生在那個物件上不是多此一舉?
您的想法很好,但因為您目前只有到一個按鈕,如果在畫面上有許多按鈕,那就會很有用。
回覆刪除