相关疑难解决方法(0)

MonoDroid:调用自定义视图的构造函数时出错 - TwoDScrollView

我正在构建一个Android应用程序,它使用在此处找到的自定义构建的TwoDScrollView:

http://blog.gorges.us/2010/06/android-two-dimensional-scrollview/

可以在其他几个网站上找到同一个类,Stack Overflow上的其他人也提出了有关它的问题.我在以前使用Java/Eclipse构建的Android应用程序中使用它,并且我取得了成功.

在我目前的应用程序中,我想使用C#和MonoDroid.我决定用C#重写整个TwoDScrollView类.在重写它,然后在一些布局XML中使用它之后,我在尝试运行我的代码时遇到以下异常:

抛出了System.NotSupportedException.无法从本机句柄44f4d310激活MyProject.TwoDScrollView类型的实例.

System.Exception:找不到MyProject.TwoDScrollView ::.ctor(System.IntPtr,Android.Runtime.JniHandleOwnership)......的构造函数......后面有更多文本....

我的布局XML如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

<myproject.TwoDScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

</myproject.TwoDScrollView>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

根据以下链接中有关在MonoDroid中使用布局XML中的自定义视图的说明:http://docs.xamarin.com/android/advanced_topics/using_custom_views_in_a_layout

TwoDScrollView类的构造函数如下所示:

public TwoDScrollView(Context context) 
    : base(context)
{
    initTwoDScrollView();
}

public TwoDScrollView(Context context, IAttributeSet attrs) 
    : base(context, attrs)
{
    initTwoDScrollView();
}

public TwoDScrollView(Context context, IAttributeSet attrs, int defStyle) 
    : base(context, attrs, defStyle)
{
    initTwoDScrollView();
}
Run Code Online (Sandbox Code Playgroud)

C#版本中存在与Java版本相同的构造函数(可以在上面的链接中找到).什么可能出错?如果有人想看,我可以发布我的TwoDScrollView的完整C#代码.除了用C#重写之外,它基本上与位的Java代码位相同.

谢谢你的帮助!

android scrollview android-custom-view android-layout xamarin.android

45
推荐指数
3
解决办法
3万
查看次数

如何在Xamarin.Android中注册我自己的Application子类?

我有

public class MyApp : Application
Run Code Online (Sandbox Code Playgroud)

在Java中,我会在清单中添加一行,并将其传递给我的应用程序的名称空间和名称:

<application android:icon="@drawable/icon" android:label="@string/app_name"
    android:name="com.devahead.extendingandroidapplication.MyApplication">
Run Code Online (Sandbox Code Playgroud)

在Xamarin中,有[Application]属性,但文档声明该Name成员不受支持.那么如何让我的子类注册?在哪里应用属性?

如果我将属性添加到我的子类,我得到:

System.NotSupportedException: Unable to activate instance of type TestClient_Android.MyApplication from native handle 14d00019
Run Code Online (Sandbox Code Playgroud)

android xamarin.android

23
推荐指数
1
解决办法
5699
查看次数