2017-01-30 4 views
0

나는 사운드 보드에서 작업 중이므로 소리를 공유하기 위해 긴 클릭을 구현하고 싶습니다. 나는 각 버튼긴 클릭 버튼이 작동하지 않습니다.

public void MainMMP(View view){ 
    switch (view.getId()) { 
     case R.id.button1: 
       MainMMP.release(); 
       MainMMP = MediaPlayer.create(this, R.raw.xxx1); 
       MainMMP.start(); 
       break; 
     case R.id.button2: 
       MainMMP.release(); 
       MainMMP = MediaPlayer.create(this, R.raw.xxx2); 
       MainMMP.start(); 
       break; 
     case R.id.button3: 
      MainMMP.release(); 
      MainMMP = MediaPlayer.create(this, R.raw.xxx3); 
      MainMMP.start(); 
      break; 

에 대한 switch Case 함께 일하고 그리고 지금은 긴 클릭을 구현하려는

. 나는 여기에 많은 다른 코드를 시도했지만 그것은 나를 위해 작동하지 않습니다. onLongClick 진술 및 위치를 어디에 넣어야할지 모르겠습니다.

누군가가 내게 작동하는 방법을 보여줄 수 있고 길게 누르는 경우 그냥 그 방법이 효과가 있다는 것을 알 수있는 토스트를 보내야합니까?

+0

확인하고 싶은 코드를 게시했습니다. – AnixPasBesoin

답변

0

원하는 곳에 OnLongClickListener를 추가 할 수 있습니다 (예 : onCreate 메서드).

봅니다 다음 코드를 사용 :

Button button = (Button)findViewById(R.id.button); 
    button.setOnLongClickListener(new View.OnLongClickListener() { 

    @Override 
    public boolean onLongClick(View v) { 

     //Your code 

     return false; // True if you want to execute simple click code too 
    } 
}); 
+0

하지만 모든 버튼마다 다른 작업을해야합니다. 내 문제는 – ExiizZ

+0

입니다.보기를 통해 각 버튼의 ID를 얻을 수 있습니다. 나는 문제의 요점을 얻고 있는지 정말로 모르겠다. – Juanje

0

당신은 당신의 코드에서이

private View.OnLongClickListener listener = new View.OnLongClickListener() { 

    @Override 
    public boolean onLongClick(View view) { 
     switch (view.getId()) 
      case R.id.button1: 
      // Do something... 
      break; 
      case R.id.button2: 
      // Do something else... 
      break; 
     // If you still want to get normal click callbacks return true, 
     // if you do not then return false. 
     return true; 
    } 
} 

어딘가에을 사용할 수 있습니다

Button button1 = (Button)findViewById(R.id.button1); 
Button button2 = (Button)findViewById(R.id.button2); 
button1.setOnLongClickListener(listener); 
button2.setOnLongClickListener(listener); 

또는이

더 나은

onClick/onLongClick/whatever 콜백을 얻는 일반적인 권장 방법은 Activity이 콜백 인터페이스를 구현하도록하는 것입니다.

class YourActivity extend Activity implements View.OnLongClickListener { 

    @Override 
    public boolean onCreate(/* ... */) { 
     // ... 
     button1.setOnLongClickListener(this); 
     button2.setOnLongClickListener(this); 
    } 

    @Override 
    public boolean onLongClick(View view) { 
     // Same code as the one above 
    } 
} 
+0

이 방법을 시도했지만이 시점에서 나는 시도했다. button1.setOnLongClickListener (listener); <- setOnLongClick에 대한 기호를 해결할 수 없습니다. – ExiizZ

+0

무슨 일이 일어 났습니까? 이 지점에서? – AnixPasBesoin

+0

음, 첫 2 코드를 추가하려고했지만 항상 문제가 발생했습니다 button1.setOnLongClickLister <- 기호를 해결할 수 없습니다 – ExiizZ

관련 문제