android - onClick() 事件与参数混淆

标签 android android-intent

我有一个具有 onClick 属性的 View :

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="hey"
    android:onClick="showCity" />

对应这个方法的是:

public void showCity(View view) {
    Intent intent = new Intent(this, CityActivity.class);
    startActivity(intent);
}

但是,我有一个菜单项,我也想打开 CityActivity:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_city:
            showCity();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

但是,这不起作用,因为它在调用 showCity() 时缺少 view 参数,我不确定在这种情况下它应该是什么.

如何修改它以在这两种情况下工作?

最佳答案

将您的 onOptionsItemSelected 代码替换为以下代码:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_city:
            showCity(null);
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

showCity 必须具有 View 参数,而不是您可以将 null 作为参数传递给您的 onClick() 方法。

关于android - onClick() 事件与参数混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33514331/

相关文章:

Android:组件的 IntentFilters

android - 将数据从一个 Activity 传递到另一个 Activity

android - 使用 IF 语句查看启动 Activity 的 Intent - ANDROID

android - ActionBar 容量/溢出不会随方向变化而变化

android - React原生+IOS

android - 从自定义键盘/谷歌键盘在android中的Edittext中插入图像/贴纸/gif

android - 文本外观在我的主题中不起作用

android - 如何在 Eclipse(ADT Bundle)中使用 Sony Xperia Z 进行 USB 调试

java - Android 应用程序-将对象作为额外 Intent 传递与使用公共(public)成员变量

java - 在导航栏中分享一切都很完美,但在 Whatsapp 中它只显示链接而不是文本