2011-07-13 52 views
0

下面是我的計劃,我收到此錯誤:setOnClickListener沒有工作,拋出錯誤

Description Resource Path Location Type 
The method setOnClickListener(View.OnClickListener) in the type View is not applicable for the arguments (welcome) welcome.java /testcalculator/src/com/testcalculator line 31 Java Problem 

welcome.java

package com.testcalculator; 
public class welcome extends Activity{ 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.welcome1); 
     Button playBtn = (Button) findViewById(R.id.playBtn); 
     playBtn.setOnItemClickListener(); 
     Button exitBtn = (Button) findViewById(R.id.exitBtn); 
     exitBtn.setOnClickListener(this); 
    } 
    public void onClick(View v) { 
     Intent i; 
     switch (v.getId()){ 
     case R.id.playBtn : 
      i = new Intent(this, testcalculator.class); 
      startActivity(i); 
      break; 
     case R.id.exitBtn : 
      finish(); 
      break; 
     } 
    } 
    } 

的問題是,我擁有所有必需的導入選項在我的問題,但仍然收到錯誤消息。

+0

空行是沒有任何幫助...... – Siddharth

回答

1

你是通過你的Activity類的OnClickListener這一行:

exitBtn.setOnClickListener(this); 

然而,你的類需要顯式聲明它正在實施View.OnCLickListener接口。類報關行改成這樣:

public class welcome extends Activity implements OnClickListener 

一對夫婦的其他注意事項:

你寫playBtn.setOnItemClickListener()。也許你的意思是playBtn.setOnClickListener(this)?按鈕沒有OnItemClickListeners

您還可以設置OnClickListener,而不必讓活動類本身通過聲明匿名類來實現接口。像這樣:

playBtn.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     // playBtn code 
    } 
}); 

exitBtn.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     // exitBtn code 
    } 
}); 

這種方式更經常使用,因爲它更具可讀性。通過分離按鈕的onClick代碼,你可以很容易地告訴哪個按鈕做什麼,而不是把它全部放到一個方法中,並讓類自己實現OnClickListener。

0
 
Button playBtn = (Button) findViewById(R.id.playBtn); 
playBtn.setOnItemClickListener(); 

它應該是setOnClickListener(this),如退出按鈕所做的那樣。退出按鈕是否工作?

0

您正在爲兩個OnClickListener類設置常見的onClick方法,這是錯誤的。嘗試爲兩個按鈕的OnClickListener類使用兩種不同的onClick方法。

0

如果你想使用this作爲exitBtn.setOnClickListener(this);,你必須聲明你的活動將實現接口OnClickListener

public class welcome extends Activity implements OnClickListener { 
... 
} 
0

試試這個:

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


    //////// MENU ////////// 
    Button playBtn = (Button) findViewById(R.id.playBtn); 
    playBtn.setOnItemClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      i = new Intent(this, testcalculator.class); 
      startActivity(i); 
     } 
    }); 

    Button exitBtn = (Button) findViewById(R.id.exitBtn); 
    exitBtn.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      finish(); 
     } 
    }); 
} 

或更改您的類來實現OnClickListener like:public class welcome extends Activity implements OnClickListener

+0

公共類擴展歡迎Activity實現OnClickListener修復了這個問題,我刪除了以下內容: import java.io.IOException; import java.util.List; import android.provider.SyncStateContract.Constants; import android.widget.AdapterView.OnItemClickListener; – super

-1

您需要編寫

playBtn.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     // code here 
    } 
}); 

以及相同的按鈕。我認爲它會比你的版本更好。:)

0

導入以下:

import android.view.View.OnClickListener; 
0

你寫的主要活動的頂端這條線上,實現OnClickListener,

public class welcome extends Activity implements OnClickListener 
相關問題