再次使用Xtend进行Android开发

4

我在尝试编译以下简单的WebView示例时遇到了两个主要问题:

  • 强制类型转换部分 (WebView)findViewById(R$id::webview) 出现了 未解决的JvmIdentifiableElement 错误

  • 匿名类部分完全不起作用。我猜想Xtend不支持它?

以下是源代码:

package com.stackoverflow

import android.app.Activity
import android.webkit.WebView
import android.os.Bundle
import android.webkit.WebViewClient

class HelloWebViewActivity extends Activity
{
    WebView _webView

    override void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState)
        setContentView(R$layout::main)

        // Error "Couldn't resolve reference to JvmIdentifiableElement 'WebView'"
        _webView = (WebView)findViewById(R$id::webview)
        _webView.settings.javaScriptEnabled = true
        _webView.loadUrl("http://stackoverflow.com")

        // A bunch of complaints towards the anonymous class
        _webView.setWebViewClient(new WebViewClient()
        {
            override shouldOverrideUrlLoading(WebView view, String url)
            {
                view.loadUrl(url)
                true
            }
        })
    }
}

我的 .classpath 文件:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="xtend-gen"/>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="src" path="gen"/>
    <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins" />
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
    <classpathentry kind="con" path="org.eclipse.xtend.XTEND_CONTAINER"/>
    <classpathentry kind="output" path="bin/classes"/>
</classpath>

有什么想法吗?
1个回答

5

1) 在Xtend中,强制类型转换使用 'as'。在您的情况下,代码如下: _webView = findViewById(R$id::webview) as WebView

2) 匿名类目前不被支持。如果匿名类只有一个方法,请考虑使用闭包代替(参见http://www.eclipse.org/Xtext/xtend/documentation/index.html#closures中的函数映射部分)。


谢谢您的回答!他们解决了我的问题,但不幸的是,我仍然无法在Android开发中使用Xtend,因为它总是会导致"APK中重复内容"错误。目前唯一的解决方案似乎是使用Maven的extractDuplicate,但我并不想这样做。 - kizzx2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接