android - OnLongClickListener 没有正常工作

标签 android view oncreate onlongclicklistener android-toast

代码非常简单。没什么了不起的,我只是想吐槽一条消息,出于某种原因,两种情况下的行为是不同的。

案例 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 设置 onLongClickListener。你需要添加这个:

someText.setOnLongClickListener(this);

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

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

关于android - OnLongClickListener 没有正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21835586/

相关文章:

java - 在 fragment 之间传递数据

android - 防止选项菜单关闭 OptionItemSelected

android - 检测 View 外的触摸

database - Oracle用rownum查看性能

java - Android:线程完成后使用 setContentView()

android - 为图像添加圆角

android - 如何在 Android Gradle 构建中使用带有 slf4j 的 Mina?

MySQL 使用 select * from tablename definition 查看性能

android - SQLiteOpenHelper 不调用 onCreate

service - 我可以从 Application#onCreate() 启动服务吗?