OnLongClickListener重写报错:长按按钮跳转新Activity问题求助
解决按钮长按跳转Activity的Override错误
问题原因分析
你的代码里有两个关键错误导致了「Method does not override method from its superclass」报错:
- 接口名称拼写错误:把
View.OnLongClickListener写成了View.OnCLongClickListener(多了一个多余的C),导致你实现的不是系统定义的标准接口,@Override注解自然无法匹配到父类方法。 - 方法返回值不匹配:
onLongClick方法的标准返回值是boolean类型,你写成了void,和系统接口的方法签名不一致,因此无法完成重写。
修正后的完整代码
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button); defineView(); handleIntent(); defineActionBar(); checkPermission(); button.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { openWebsite(); return true; // 返回true表示已处理长按事件,false表示允许系统继续处理后续逻辑 } }); } public void openWebsite() { Intent intent = new Intent(this, Website.class); startActivity(intent); }
补充说明
onLongClick的返回值需要根据需求选择:返回true意味着你已经完全处理了这个长按事件,系统不会再触发其他相关的点击行为;返回false则表示允许系统继续处理后续的点击逻辑,比如可能触发普通点击事件。
内容的提问来源于stack exchange,提问作者Xtra 514
相关产品推荐
相关产品推荐

