我與我的android點擊監聽按鈕一些非常奇怪的麻煩!我已經做了好幾次了,我瘋了,沒有爲這個錯誤找到一個解決方案(既不是合理的解釋)。單擊安卓按鈕聽衆按鈕不工作
錯誤 我的活動上的2個按鈕的事件處理程序沒有被執行。沒有錯誤,它只是沒有在運行時執行處理程序動作。這是一個按鈕的代碼:
btnNext = (Button) findViewById(R.listclient.btnnext);
btnNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Toast.makeText(MyActivityClassName.this, "Flag 01", 1).show();
btnNext.setText("CLICKED!");
}
});
這就是XML的佈局按鈕:
<Button android:id="@+listclient/btnnext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:clickable="true"
style="@style/Widget.TextViewInfo"
android:text="Next"
/>
信息
- 也有這個活動裏面的ImageButton的,這imageButton完美地與一個內部的OnClickListener類(就像這個一樣)。
- 我已經試圖讓我的活動類繼承OnClickListener,並將它設置爲按鈕的點擊偵聽器,但沒有成功。
- 我也在我的Activity類中創建了一個類,並將其設置爲按鈕點擊偵聽器,但也沒有成功。
我編譯爲Android 2.1 +谷歌API(SDK 7)
------------ EDITED ------------- ----
如果我把我的代碼:
btnNext.performClick();
它的執行!我現在變得更瘋狂了! 當我觸摸它時,實際上點擊了按鈕,我可以看到按鈕「動畫」,並且點擊被記錄在LogCat中。
我的應用程序真的很大(大約50項活動),在很多情況下,我們在不同的活動中使用相同的按鈕名稱。爲了防止使用「id /」實現大量的小部件引用,我們使用佈局的名稱來分隔小部件。例如,我在其他2個佈局中有一個「btnext」。 但我試過你的建議,它仍然無法正常工作。 – IPValverde 2012-01-16 15:58:49
兩種解決方案:a)以不同的方式加前綴,比如'android:id =「@ + id/listclient_btnnext」'(然後在代碼中使用'R.id.listclient_bttnnext')。或者b)不關心和重複使用它們。 'findViewById()'只在當前視圖層次(=可見佈局)中搜索。因此,如果您有3種不同佈局的活動,則無關緊要。它會找到與活動佈局相關的一個。 (這就是爲什麼''findViewById()''總是返回'null',如果你在'setContentView()'之前調用它,那麼沒有視圖層次結構) – user287351 2012-01-16 16:01:17
嗯......+1 我不知道!我認爲使用「id /」更好。 但不幸的是,它不是問題,因爲更改引用並沒有使clickEvent被調用。 – IPValverde 2012-01-16 16:06:27