我从Java绑定了一个Xamarin库,它生成了1个错误的函数。 关键字应为覆盖,但目前为虚拟。
// Metadata.xml XPath方法参考:path =" / api / package [@name =' com.mapbox.mapboxsdk.tileprovider'] / class [@name =&#39 ; MapTileLayerBase.CacheTask'] /方法[@name =' doInBackground'和count(参数)= 1和参数[1] [@type =' java.lang.Object ...']]"
[注册(" doInBackground","([Ljava / lang / Object;)Ljava / lang / Void;"," GetDoInBackground_arrayLjava_lang_Object_Handler")]受保护的虚拟不安全的全局:: Java.Lang.Object DoInBackground (params global :: Java.Lang.Object [] p0)
我需要将虚拟更改为覆盖,但我不知道该怎么做。
我在互联网上发现一些评论说我应该试试这个:
<attr path="/api/package[@name='com.mapbox.mapboxsdk.tileprovider']/class[@name='MapTileLayerBase.CacheTask']/method[@name='doInBackground']" name="virtual">false</attr>
我试过但它没有用。
你知道怎么改变吗?
答案 0 :(得分:1)
解决方案是在true
映射中将Metadata.xml
设置为<attr
path="/api/package[@name='com.mapbox.mapboxsdk.tileprovider']/class[@name='MapTileLayerBase.CacheTask']/method[@name='doInBackground']"
name="final">true</attr>
:
virtual
这有效地从方法签名中删除了final
关键字,并且也没有添加to_date('21-02-2006 14:06:14','dd-mm-yyyy hh24:mi:ss')
关键字。奇怪的行为,但它的确有效。
答案 1 :(得分:1)
试试:
const clientObj = { //18 fields };
const [client, setClient] = useState(clientObj);
const onChange = event => {
const { name, value } = event.target;
setClient(prevState => ({
...prevState, // shallow copy all previous state
[name]: value, // update specific key/value
}));
};
...
<Form.Control
name="name"
value={client.name}
onChange={onChange}
placeholder="Your name"
type="text"
required
/>
<Form.Control
name="lastName"
value={client.lastName}
onChange={onChange}
placeholder="Your last name"
type="text"
required
/>
<Form.Control
name="age"
value={client.age}
onChange={onChange}
placeholder="Your age"
type="text"
required
/>
...etc...
如果上一步不起作用,则采用更hacky的方式:
<attr path="/api/package[@name='com.mapbox.mapboxsdk.tileprovider']/class[@name='MapTileLayerBase.CacheTask']/method[@name='doInBackground']" name="managedOverride">override</attr>
答案 2 :(得分:0)
您确定需要在API中公开此方法吗?您可以使用此线程http://forums.xamarin.com/discussion/1871/binding-java-library-with-parameter-type-void中的方法,只需删除此方法即可。通常这种方法不是从外面明确使用的。
答案 3 :(得分:0)
在