2013-04-23 75 views
2

我真的不知道爲什麼這不起作用,我一直試圖通宵。ImageView應該減去分數,當我點擊它。我也嘗試過記錄它,但沒有成功..可能是因爲我的動畫干擾了某種方式?爲什麼我的OnClick for ImageView無法正常工作?

這是我整個XML

<TextView 
    android:id="@+id/timer1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Test" /> 
<TextView 
    android:id="@+id/score1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Score:" /> 

<ImageView 
    android:id="@+id/imgview1" 
    android:layout_width="83dp" 
    android:layout_height="131dp" 
    android:clickable="true" 
    android:onClick="PeanutClick" 
    android:src="@drawable/lil_peanut"/> 

這是我的源代碼

public class GameView extends Activity implements OnClickListener { 
MediaPlayer backgroundMusic; 
TextView mTextField; 
TextView mScoreField; 
Point size = new Point(); 
Display display; 
ImageView image; 
int score = 0; 

@SuppressLint("NewApi") 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.gameviewlayout); 
    int l; 
    mTextField = (TextView) findViewById(R.id.timer1); 
    mScoreField = (TextView) findViewById(R.id.score1); 
    image = (ImageView) findViewById(R.id.imgview1); 
    image.setOnClickListener(this); 
    TranslateAnimation moveLefttoRight = new TranslateAnimation(0, 200, 0, 
      0); 
    moveLefttoRight.setDuration(5000); 
    moveLefttoRight.setFillAfter(true); 
    moveLefttoRight.setRepeatCount(-1); 
    moveLefttoRight.setRepeatMode(Animation.REVERSE); 
    image.startAnimation(moveLefttoRight); 
    new CountDownTimer(45000, 1000) { 

     public void onTick(long millisUntilFinished) { 
      mTextField.setText("Seconds Remaining: " + millisUntilFinished 
        /1000); 
     } 

     public void onFinish() { 
      mTextField.setText("done!"); 
     } 
    }.start(); 
    display = getWindowManager().getDefaultDisplay(); 
    display.getSize(size); 
    int width = size.x; 
    int height = size.y; 
    backgroundMusic = MediaPlayer 
      .create(GameView.this, R.raw.gallery_music); 
    backgroundMusic.start(); 

} 

public void onClick(View v) { 
    if (v.getId() == R.id.imgview1) 
     Log.i("MB2", "Touchy touchy!"); 
    PeanutClick(); 
} 

public void PeanutClick() { 
    score = score - 100; 
    mScoreField.setText("Score: " + score); 
} 

@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 
    backgroundMusic.release(); 

} 

編輯;發佈的解決方案不起作用。我用我的整個XML和當前代碼更新了代碼。

+0

您在清單中定位了哪個API版本? – Grambot 2013-04-23 21:44:05

+0

您的代碼是否正在執行PeanutClick?如果你在第一行放置一個斷點(score = -100),它會被擊中嗎? – RvdK 2013-04-23 21:50:44

+0

gameviewLayout.xml是什麼樣的佈局?這是偶然的框架佈局嗎?有一些佈局的情況下,你的對象將被遮蓋,而不是其領域的最前面的東西。有些人通過將佈局中的對象(在這種情況下爲您的ImageVew)進一步向下移動來解決問題,因此它會高於其他衝突項目。 – HalR 2013-04-24 00:39:25

回答

0

我想通了,謝謝你的幫助。 onClick一直在工作,但只在圖像的原始位置。

<ImageView 
android:id="@+id/imgview1" 
android:layout_width="83dp" 
android:layout_height="131dp" 
android:clickable="true" 
android:onClick="PeanutClick" 
android:src="@drawable/lil_peanut"/> 

有了這個XML,只有左上角是可點擊的。我通過將android:layout_width="83dp"更改爲android:layout_width="fill_parent"

+0

'layout_height'呢?這是否也必須改變? – 2014-03-17 18:13:54

+0

如果您更改layout_height以填充父項,則整個屏幕水平和垂直均可點擊。 – 2014-03-19 09:42:14

+0

不適合我 – delive 2015-10-23 08:20:07

0

我不完全確定點擊屬性如何在XML上工作。但你可以做到這一點與沿着線的東西你的Java文件...

public class GameView extends Activity implements OnClickListener{ 
    ImageView iv; 
    // whatever else 

    public void onCreate(...) 
    { 
     // ... 
     iv = (ImageView) findViewById(R.id.imageView1); 
     iv.setOnClickListener(this); 
    } 

    public void onClick(View v) 
    { 
     if (v.getId() == R.id.imageView1) 
      PeanutClick(); 
    } 
} 
+0

嗨cskoala。在實現這些功能之後,它仍然不會註冊任何onclick事件...這是我的完整代碼; http://paste2.org/mHBUg71v – 2013-04-24 09:25:05

+0

aaaaaaaaaargh它驅使我堅果 – 2013-04-24 11:17:16

+0

你得到它的工作已經是正確的? =] – 2013-04-24 20:58:34

1
 
public void PeanutClick(View view) { 
    score = score - 100; 
    mScoreField.setText("Score: " + score); 
} 

公共方法應該在視圖參數。

+0

謝謝,這使它的工作,但只在圖像的原始位置。但至少onclick正在工作,謝謝! – 2013-04-24 12:09:45