2014-03-03 137 views
0

我想在eclipse中用按鈕創建一個簡單的應用程序。我想這樣做是爲了在按下按鈕10次後會彈出一條消息。問題是,當我啓動應用程序並按下按鈕10次時,沒有任何反應。你能告訴我我做錯了什麼嗎?按鈕問題eclipse

這是我的活動文件:

package com.example.dialog; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.content.DialogInterface.OnClickListener; 
public class Game extends Activity implements android.view.View.OnClickListener{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.game); 
     Button gamebutton = (Button) findViewById(R.id.gamebutton); 
    } 
    @Override 
    public void onClick(View v){ 
     //TODO Auto-generated method stub 
     int clicked = 0; 
     clicked++; 
     if( clicked==10){ 
      AlertDialog.Builder gamebuild = new AlertDialog.Builder(Game.this); 
      gamebuild.setMessage("Good"); 
      gamebuild.setCancelable(false); 
      gamebuild.setPositiveButton("Quit", new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        // TODO Auto-generated method stub 
        Game.this.finish(); 

       } 
      }); 
      gamebuild.setNegativeButton("One more!", new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        // TODO Auto-generated method stub 
      dialog.cancel();   
       } 
      }); 
     } 

    } 

} 

感謝響應!我用這種方式編輯了活動文件:

package com.example.dialog; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.content.DialogInterface.OnClickListener; 

public class Game extends Activity implements android.view.View.OnClickListener{ 
    int clicked = 0; 
    @Override 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.game); 
     Button gamebutton = (Button) findViewById(R.id.gamebutton); 
    } 

    @Override 
    public void onClick(View v){ 
     //TODO Auto-generated method stub 

     clicked++; 
     if( clicked==10){ 
      AlertDialog.Builder gamebuild = new AlertDialog.Builder(Game.this); 
      gamebuild.setMessage("Good"); 
      gamebuild.setCancelable(false); 
      gamebuild.setPositiveButton("Quit", new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        // TODO Auto-generated method stub 
        Game.this.finish(); 

       } 
      }); 
      gamebuild.setNegativeButton("One more!", new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        // TODO Auto-generated method stub 
      dialog.cancel();   
       } 
      }); 
     } 

    } 

} 

仍然沒有正常工作。對不起愚蠢的問題:我是新來的android。

新編輯:

package com.example.dialog; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.content.DialogInterface.OnClickListener; 

public class Game extends Activity implements android.view.View.OnClickListener{ 
    int clicked = 0; 
    @Override 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.game); 

     Button gamebutton = (Button) findViewById(R.id.gamebutton); 
     gamebutton.setOnClickListener(this); 

    } 

    @Override 
    public void onClick(View v){ 
     //TODO Auto-generated method stub 

     clicked++; 
     if( clicked==10){ 
      AlertDialog.Builder gamebuild = new AlertDialog.Builder(Game.this); 
      gamebuild.setMessage("Good"); 
      gamebuild.setCancelable(false); 
      gamebuild.setPositiveButton("Quit", new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        // TODO Auto-generated method stub 
        Game.this.finish(); 

       } 
      }); 
      gamebuild.setNegativeButton("One more!", new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        // TODO Auto-generated method stub 
      dialog.cancel();   
       } 
      }); 
     } 

    } 

} 

回答

0

問題是,可變點擊是內部的onClick聲明。所以它總是零。你必須在全球範圍內,在課堂上宣佈它。

1

您將計數器置於onClick函數中,使其每次都重置。所以,從的onClick內移動

int clicked = 0; 

您的onCreate之前,如:

int clicked = 0; 
@Override 
protected void onCreate.... 

這將使得其設置爲0一次,然後留等於不管它是最後一個值,只要應用程序是開放的,不會被殺害

+0

感謝repsonse!正如你所說,我已經編輯過活動文件,但它仍然沒有以正確的方式工作。我在我的問題中添加了新的活動文件代碼。還有更多的錯誤嗎?在此先感謝 – user3365831

+0

@ user3365831您需要添加「gamebutton.setOnClickListener(this);」爲了告訴按鈕什麼功能來點擊點擊。因爲你這樣做,你可能需要onClick函數來檢查視圖(作爲v傳遞)來檢查哪個按鈕被按下,這樣你可以有多個按鈕(如果你想,再加上這是一個好習慣) – T3KBAU5

+0

你能請再次看到問題 - 我再次編輯它。我已經嘗試了puttin'「gamebutton.setOnClickListener(this)」onClick內部和外部。仍然沒有變化..非常感謝 – user3365831