【问题标题】:Android: "Can not resolve method 'x()'" when overriding superclass methodsAndroid:覆盖超类方法时“无法解析方法'x()'”
【发布时间】:2016-04-13 22:30:05
【问题描述】:

我试图从一个名为 AbsSeekBar 的类中重写一些方法。然而,Android Studio 用标题中提到的消息强调 super.methodname() 和 @Override 用“方法不会覆盖它的超类中的方法”,即使方法就在那里。代码示例:

子类:

import android.widget.AbsSeekBar;

public class VerticalSeekBar extends AbsSeekBar {

    // Constructors, work fine
    ...

    @Override
    void onProgressRefresh(float scale, boolean fromUser, int progress) {
         super.onProgressRefresh(scale, fromUser, progress);

        if (mOnSeekBarChangeListener != null) {
            mOnSeekBarChangeListener.onProgressChanged(this, progress, fromUser);
        }
    }

    ...
}

超类的代码:

public abstract class AbsSeekBar extends ProgressBar {

    // Some methods
    ...

    @Override
    void onProgressRefresh(float scale, boolean fromUser, int progress) {
        super.onProgressRefresh(scale, fromUser, progress);

        final Drawable thumb = mThumb;
        if (thumb != null) {
        setThumbPos(getWidth(), thumb, scale, Integer.MIN_VALUE);

        // Since we draw translated, the drawable's bounds that it signals
        // for invalidation won't be the actual bounds we want invalidated,
        // so just invalidate this whole view.
        invalidate();
    }

    ...
}

【问题讨论】:

  • 问题解决了吗?
  • @SrikarReddy 不幸的是没有。你有同样的问题吗?
  • 是的,onProgressRefresh 也有同样的问题。不知道为什么会发生以及如何解决它。

标签: java android inheritance widget


【解决方案1】:

您的 AbsSeekBar 方法 onProgressRefresh 被标记为 @Override。 ProgressBar 是否定义了 onProgressRefresh(float, boolean, int) 方法?

【讨论】:

  • 是的,确实如此:void onProgressRefresh(float scale, boolean fromUser, int progress) { if (AccessibilityManager.getInstance(mContext).isEnabled()) { scheduleAccessibilityEventSender(); } }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
  • 2013-11-02
  • 2018-05-28
  • 2016-08-22
相关资源
最近更新 更多