【问题标题】:How do you properly write and use a View subclass in Android?如何在 Android 中正确编写和使用 View 子类?
【发布时间】:2011-06-11 11:48:46
【问题描述】:

我正在尝试实施找到的解决方案之一here.

我的问题是我不确定我是否正确地实现和使用了我的子类。 我在这里对 WebView 进行子类化:

public class myWebView extends WebView{

  public myWebView(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
}

  @Override
protected void onSizeChanged(int w, int h, int ow, int oh) {
    // TODO Auto-generated method stub

      scrollTo(xScroll - (widthScroll/2), yScroll - (heightScroll/2));


    super.onSizeChanged(w, h, ow, oh);
}

   }}

它应该是私有的,但暂时忘记这一点。我的一个活动中有代码,该代码在视图层次结构中有一个内部 web 视图。在该活动的 onCreate 方法之外。

在onCreate方法里面,我有:myWebView mapImage = (myWebView) findViewById(R.id.mapcroppic);

这给了我该调用的 ClassCastException。 (xml布局文件是否需要使用<myWebView>?可以吗?)我该如何正确使用?

【问题讨论】:

    标签: android webview android-layout subclassing


    【解决方案1】:

    (xml布局文件需要使用<myWebView>吗?可以吗?)如何正确使用?

    是的:

    <your.package.name.myWebView
        android:layout_with="blah"/>
    

    好吧,如果myWebView 是一个公共类,那就可以了。如果是内在的:

    <view class="your.package.name.myWebView.YourActivity$myWebView" />
    

    【讨论】:

    • 感谢您的更新,我只是想询问更多信息。
    • 我收到 ClassNotFoundException。你确定这是正确的顺序吗?例如,我的应用名为 SlingShot。包是com.joe.sling,包含myWebView子类的activity是ShootActivity,所以我应该有
    • 不幸的是,它是保密的,但我给你的正是我所做的,只是改了名字。
    • 我想我已经成功了,但现在我得到一个 ERROR/AndroidRuntime(7699): Caused by: java.lang.NoSuchMethodException: myWebView(Context,AttributeSet)
    • 将该构造函数添加到您的子类中。这是因为当视图从 XML 膨胀时调用的构造函数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 2016-06-19
    • 2020-03-22
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多