2014-02-17 6 views
0

코드가 매우 간단합니다. 훌륭한 메시지는 아니지만 메시지를 건배하려고하는 중대한 이유가 있습니다. 두 가지 경우에서 동작이 다릅니다.OnLongClickListener가 작동하지 않습니다.

사례 1 :이 작동된다

@Override 
     protected void onCreate(Bundle savedInstanceState) { 
      // TODO Auto-generated method stub 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.webopen); 


      TextView sometext = (TextView)findViewById(R.id.click); 
      sometext.setOnLongClickListener(new OnLongClickListener() { 

       @Override 
       public boolean onLongClick(View v) { 
        Toast.makeText(getApplicationContext(), "Long click Working", Toast.LENGTH_LONG).show(); 
        return false; 
       } 
      }); 


      } 

사례 2 : 여기

코드입니다 작동하지 않습니다! 이

public class OnClick extends Activity implements OnLongClickListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.webopen); 

     TextView sometext = (TextView) findViewById(R.id.click); 

    } 

    @Override 
    public boolean onLongClick(View v) { 

     switch (v.getId()) { 
     case R.id.click: 
      Toast.makeText(getApplicationContext(), "Long click enabled", 
        Toast.LENGTH_LONG).show(); 
      // OR 
      // Something(); 
      break; 

     default: 
      break; 
     } 

     return false; 
    } 

    public boolean Something() { 

     Toast.makeText(getApplicationContext(), "Long click enabled", 
       Toast.LENGTH_LONG).show(); 
     return true; 
    } 
} 

를 작동하지 않는 이유는 코드에 대한 멋진 곳은 어디에도 없습니다 이유를 알고 싶어하지만 난 그냥 onLongClickListener가 작동하지 않는 이유를 알고 싶어요.

모든 제안 .. 도움이 될 것입니다 :) sometext에 대한 setOnLongClickListener 누락

+0

u someText.setOnLongClickListener가 누락되었습니다 (this); – azhar

+0

감사합니다. 작동했는지 확인하십시오. – mike20132013

답변

1

당신은 someText에 대한 onLongClickListener 설정되지 않습니다. 이 작업을 추가해야합니다

someText.setOnLongClickListener(this); 

이 줄은 TextView 객체에 리스너 객체를 연결합니다. 첫 번째 경우 setOnLongClickListener으로 전화를 걸면 작동합니다. 이 경우 새 onLongClickListener 개체 인라인을 만듭니다.

두 번째 예에서 ActivityOnLongClickListener을 상속하며이 개체는 해당 개체의 인스턴스가됩니다. 그러므로 청취자를 someText으로 설정하려면 현재 클래스에 대한 참조 인 청취자 this을 전달하십시오.

+0

고맙습니다. onLongClickListener를 등록하는 것을 완전히 잊어 버렸습니다. 내 textview .. 내 대답을 바 꾸었습니다. – mike20132013

1

사례 2.

TextView sometext = (TextView) findViewById(R.id.click); 
sometext.setOnLongClickListener(this); // missing 

첫 번째 경우에는 익명의 내부 클래스를 사용했습니다. 두 번째 클래스에서

인터페이스 OnLongClickListener

+0

lol .. thanks ... 그 점을 잊어 버렸습니다. P – mike20132013

+0

@ mike20132013 답변 중 하나를 수락해야합니다. http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work을 읽으십시오. – Raghunandan

1

당신은 TextView에 대한 onLongClick 리스너를 등록하지 않습니다를 구현합니다. onCreate 코드에 다음 줄을 추가하면 제대로 작동합니다.

sometext.setOnLongClickListener(this); 
+0

lol..thanks .. 그 점을 잊어 버렸습니다 : P – mike20132013