2014-02-17 94 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不工作的原因。

任何建议将帮助.. :)

+0

u miss someText.setOnLongClickListener(this); – azhar

+0

谢谢你的工作。 – mike20132013

回答

1

您没有设置onLongClickListenersomeText。你需要补充一点:

someText.setOnLongClickListener(this); 

这条线将监听对象附加到TextView对象。在第一种情况下,您拨打setOnLongClickListener,这就是为什么它可以工作。在这种情况下,您正在创建一个新的对象inline

在第二个示例中,您的Activity继承OnLongClickListener,这使其成为该对象的一个​​实例。因此,要将侦听器设置为someText,请传递侦听器this,这是对当前类的引用。

+0

谢谢..我完全忘记了关于relock的onLongClickListener我的textview ..我改变了我的答案。 – mike20132013

1

案例2人失踪setOnLongClickListenersometext

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

在第一种情况下,您使用了一个匿名内部类。

在第二类实现接口OnLongClickListener

+0

大声笑..谢谢..完全忘了:P – mike20132013

+0

@ mike20132013你应该接受其中一个答案。阅读http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – Raghunandan

1

你不注册onLongClick侦听器TextView。 在您的代码onCreate中添加以下行,它应该可以工作。

sometext.setOnLongClickListener(this); 
+0

大声笑..感谢..完全忘记了这一点:P – mike20132013

相关问题