0
public class NewCallInfo
{
    public string Site { get; set; }
    public string CustomerName { get; set; }
    public string CustomerPhone { get; set; }
    public string CustomerExt { get; set; }
    public string CustomerAddress { get; set; }
    public string CustomerCity { get; set; }
    public string CustomerState { get; set; }
    public string CustomerZip { get; set; }
    public string ServiceType { get; set; }
    public string Priority { get; set; }
    public string Description { get; set; }
    public string Technician { get; set; }
    public string Serial { get; set; }
    public string Model { get; set; }
}

public interface INewCall
{
    NewCallInfo GetNewCallInfo(string site);
}

public class HandleNewCall : INewCall
{
   private SqLiteHelper Helper {get;set;}

   public HandleNewCall(Context context)
   {
      Helper = new SqLiteHelper(context);
   }
   public NewCallInfo GetNewCallInfo(string site)
   {
      string whereClause = string.Format("Where Site='{0}'", site);

        ICursor callCursor = _helper.ReadableDatabase.Query("NewCall", null, whereClause, null, null, null, null);
        NewCallInfo newCall = new NewCallInfo();

        while(callCursor.MoveToNext())
        {
            newCall.Site                =       callCursor.GetString(0);
            newCall.CustomerName        =       callCursor.GetString(1);
            newCall.CustomerPhone       =       callCursor.GetString(2);
            newCall.CustomerExt         =       callCursor.GetString(3);
            newCall.CustomerAddress     =       callCursor.GetString(4);
            newCall.CustomerCity        =       callCursor.GetString(5);
            newCall.CustomerState       =       callCursor.GetString(6);
            newCall.CustomerZip         =       callCursor.GetString(7);
            newCall.ServiceType         =       callCursor.GetString(8);
            newCall.Priority            =       callCursor.GetString(9);
            newCall.Description         =       callCursor.GetString(10);
            newCall.Technician          =       callCursor.GetString(11);
            newCall.Serial              =       callCursor.GetString(12);
            newCall.Model               =       callCursor.GetString(13);
        }

        if (string.IsNullOrEmpty(newCall.Site))
            newCall.Site = "None";

        return newCall;
   }
}

class MyApp : Application
{
    public INewCall NewCall { get; set; }

    public MyApp(IntPtr handle, JniHandleOwnership transfer)
        :base(handle, transfer)
    {

    }

    public override void OnCreate()
    {
       NewCall = new HandleNewCall(this);
    }
}

次に、私のアクティビティで次のことを行います。

var call = ((MyApp) Application).NewCall.GetNewCallInfo("siteString");

「ソース タイプから宛先タイプにキャストできません」というメッセージが表示されます。インターフェイスとアプリケーションのサブクラスに関する上記のすべては、私にとって非常に新しいものですが、オンラインの例と同じ方法ですべてを行ったように感じます. つまり、この例では. 何時間も頭を壁にぶつけていました。私が行方不明になっていることを誰かがはっきりと見ていますか?

4

1 に答える 1

1

[Application]AndroidManifest.xml を適切に生成するためのクラスの属性が欠落しているMyAppため、Android はそれをアプリケーション クラスとして使用することを認識していません。そのため、オブジェクトが実際にはクラスのインスタンスではないため、Applicationプロパティをキャストしようとすると失敗します。MyAppクラス定義を次のように更新します。

[Application]
public class MyApp : Application
{
    // ...
}
于 2012-07-07T00:07:02.557 に答える