2012-04-12 4 views
1

作品アンドロイドのonClickだけだから私は、私はカスタムビュー(キャンバス)を含むビュー(R.layout.main)を抱えてい 本当に困惑している一度

このビューは、キャンバスの上にオーバーレイされたボタンが含まれています しかし、私はボタンをクリックしたときにOnClicklistenerがイベントを発生させますが、クリックしたときに、そのボタンの後に何もしていない

活動:

public class RunActivity extends Activity implements OnTouchListener, OnClickListener { 

    static int width; 
    static int height; 

    static boolean reset=false; 

    //draw d; 
    View d; 

    Button jump_button; 

    //jump 
    float last_touchpos=0; 
    static boolean jump=false; 

    private static Context mContext; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     //d = new draw(this); 
     d = getLayoutInflater().inflate(R.layout.main, null); 
     d.setOnTouchListener(this); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
           WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     mContext = this; 

     //get screen size 
     WindowManager wm = (WindowManager) this.getContext().getSystemService(Context.WINDOW_SERVICE); 
     Display display = wm.getDefaultDisplay(); 

     width = display.getWidth(); // deprecated 
     height = display.getHeight(); // deprecated 

     setContentView(d); 

     jump_button = (Button) findViewById(R.id.jump); 
     jump_button.setOnClickListener(this); 
    } 
    public static Context getContext(){ 
     return mContext; 
    } 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     Log.d("touch","touched"); 

     if (draw.end == true) 
     { 
      reset=true; 
     } 
     else 
     { 
      if(last_touchpos != 0) 
      { 
       if(last_touchpos < event.getY()) 
       { 
        jump = true; 
        last_touchpos = 0; 
       } 
      } 
      else 
      { 
       last_touchpos = event.getY(); 
      } 
     } 

     return false; 
    } 
    @Override 
    public void onClick(View arg0) { 
     jump = true; 
    } 
} 

レイアウト:

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <run.alexander.fuchs.draw 
     android:id="@+id/canvasview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <Button 
     android:id="@+id/jump" 
     android:layout_width="100dp" 
     android:layout_height="50dp" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:text="Jump" /> 

</RelativeLayout> 

答えて

2
static boolean jump=false; 

あなたは必ずあなたのonClickが一度呼び出されことができますどのようにこの文

boolean jump=false; 
+0

この変数はキャンバスで使用されているため、この変数が使用されていますので、 – user1293780

+0

にアクセスしてから再びfalseにしてください。 キャンバスで jump = false; – MAC

0

から静的を削除します。 onClickメソッド内でログ印刷メッセージを使用して、一度呼び出されたことを確認します。あなたのコードは大丈夫です。あなたのonClickが正しく動作し、残りのコードをチェックしてください。

+0

あなたが正しくアクティビティを起動してもエラーはキャンバスにあるようです – user1293780

関連する問題