2010-09-03 35 views
2

我的Activity下面的onClick()似乎沒有做任何事情(沒有看到任何字符串出現),但我沒有得到任何錯誤。我錯過了什麼?有沒有辦法追蹤功能?android:button onClick(),不能告訴是否有任何事情發生

package com.HelloTabWidget2; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Button; 
import android.widget.TextView; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Toast; 

public class AlbumsActivity extends Activity { 

    private Button closeButton; 

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     this.setContentView(R.layout.tab1); 
     this.closeButton = (Button)this.findViewById(R.id.button); 
     this.closeButton.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
      Toast.makeText(AlbumsActivity.this, "You clicked the button", Toast.LENGTH_SHORT).show(); 

      } 
     }); 


    } 
} 

謝謝!

回答

3

我相信問題是使用匿名方法,當嘗試使用您的代碼時出現錯誤。只需添加暗示OnClickListenter。

如果您有多個按鈕,您需要在v.getId()上添加一個開關或其他東西。

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.Toast; 

public class AlbumsActivity extends Activity implements OnClickListener { 
    private Button closeButton; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     this.closeButton = (Button)this.findViewById(R.id.button); 
     this.closeButton.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     Toast.makeText(this, "You clicked the button", Toast.LENGTH_SHORT).show(); 

    } 
} 
+0

這應該工作。此外,性能方面的原因更好。在問題中註冊偵聽器會在運行時創建新對象。 – Juri 2010-09-03 15:29:07

+0

是的,但活動不是使用onClickListener的,它是按鈕。如果您嘗試通過這樣做來節省性能,則不會使用面向對象的設計概念。除非您有特定的理由,否則請不要這樣做。 – Falmarri 2010-09-03 20:24:08

1

我要說的是,而不是寫在下面的代碼

...setOnClickListener(new OnClickListener() {..." 

我寧願以下OCDE

"...setOnClickListener(new View.OnClickListener() {..." 
+0

事實上,這應該可以解決這個問題。 – Juri 2010-09-03 15:28:15

+0

我已經嘗試了上面列出的兩種方法,但我仍然沒有收到任何指示,無論是從我的祝詞還是日誌。還有什麼我失蹤? – JoshuaBen 2010-09-07 14:41:44

+0

好吧,如果我將其設置爲新項目中的獨立活動,它可以正常工作。然而,當我把它作爲一個標籤內的活動時,我什麼都看不到。這是爲什麼它打破了? – JoshuaBen 2010-09-07 15:01:35

0

您可以簡單地使用下面的代碼

Button closeButton = (Button) findViewById(R.id.button); 

    closeButton.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Toast.makeText(getApplicationContext(), "Onclick works", Toast.LENGTH_LONG).show(); 

     } 
    }); 

如果它提供例外,那就去吧做項目 - >清潔。事情會正常工作

-1
public class Whatever_MainActivity extends Activity 
{ 
    ImageButton button1, button2, button3, button4, button5;  // my buttons 
    Button start, reroll, hold; 

    Button reroll_dice1, reroll_dice2, reroll_dice3, reroll_dice4, reroll_dice5; 

    Button ok_button1; 

@Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Buttons(); // "Come here button" 

     // Scoring_Method(); 
    } 

public void Buttons() 
    { 
     ok_button1 = (Button)findViewById(R.id.ok_button1); 
     ok_button1.setOnClickListener(new OnClickListener() 
         { 
          public void onClick(View buttonn) 
          { 
           reroll_dice1.setVisibility(View.INVISIBLE); 
           reroll_dice2.setVisibility(View.INVISIBLE); 
           reroll_dice3.setVisibility(View.INVISIBLE); 
           reroll_dice4.setVisibility(View.INVISIBLE); 
           reroll_dice5.setVisibility(View.INVISIBLE); 
           ok_button1.setVisibility(View.INVISIBLE); 


           reroll.setVisibility(View.VISIBLE); 
           hold.setVisibility(View.VISIBLE); 
          } 
         }); 
    } 
+0

你可能會考慮編輯這篇文章並解釋你的代碼如何解決OP問題。 OP還對跟蹤錯誤提出了一些問題。 – 2012-06-11 05:43:45

相關問題