Очевидно компилаторът на ресурсите се проваля. Какво показват прозорците на конзолата и проблемите на Eclipse? Между другото, трябваше само да актуализирате вашия PATH за използване на adb.exe и т.н. извън Eclipse... актуализираният ADT винаги ще знае къде да намери adb.exe (спрямо това, което сте задали на Android SDK root в Preferences, разбира се).

person Sebastian Piu    schedule 25.01.2011    source източник


Отговори (2)


Всички методи, декларирани в интерфейс, са маркирани като virtual abstract, а всички методи, които имплементират интерфейсни методи в класове, са маркирани като virtual final, така че CLR знае, че не може просто да ги извика директно - трябва да прави справки във vtable по време на изпълнение, за да извика правилния изпълнение. Реализациите на интерфейса все още са виртуални, но не можете да ги отмените, тъй като са окончателни.

Като пример, следната C# дефиниция:

public interface IInterface {
    void Method();
}

public class Class : IInterface {
    public void Method() {}
}

компилира до следния IL:

.class public interface abstract IInterface {
    .method public abstract virtual instance void Method() {}
}

.class public Class extends [mscorlib]System.Object implements IInterface {
    .method public specialname rtspecialname instance void .ctor() {}
    .method public virtual final instance void Method() {}
}
person thecoop    schedule 25.01.2011
comment
отлично! Така че промених кода си, за да проверя за IsFinal вместо IsVirtual и сега работи добре. Благодаря! - person Sebastian Piu; 25.01.2011

Вярвам, че когато имплементирате интерфейс, методите, които наследявате от интерфейса, автоматично се маркират като виртуални, така че логиката е наред и нямате нужда от теста.

person Massif    schedule 25.01.2011
comment
Ако се опитам да заменя методите в деклариращия тип, не мога да го направя. Освен това аспектът на наследяването в този случай не отменя моите извиквания на метод, така че не ги открива като виртуални - person Sebastian Piu; 25.01.2011