1

代码很简单..没什么好我只是想祝酒,由于某种原因,两种情况下的行为不同。

案例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 不起作用的原因。

任何建议都会有所帮助..:)

4

3 回答 3

2

您没有onLongClickTextView. 在您的代码中添加以下行onCreate,它应该可以工作。

sometext.setOnLongClickListener(this);
于 2014-02-17T17:32:53.487 回答
2

您没有设置onLongClickListenerfor someText。你需要添加这个:

someText.setOnLongClickListener(this);

此行会将侦听器对象附加到TextView对象。在第一种情况下,您调用setOnLongClickListener,这就是它起作用的原因。在这种情况下,您正在创建一个新onLongClickListener对象in-line

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

于 2014-02-17T17:33:43.090 回答
1

案例 2缺失setOnLongClickListenersometext

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

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

在第二个你的类实现接口OnLongClickListener

于 2014-02-17T17:32:03.210 回答