2012-06-16 4 views
4

В некоторых случаях, когда доступ к полю деятельности от анонимного класса, я получаю NoSuchFieldError во время выполнения: java.lang.NoSuchFieldError: MyActivity.myFieldAndroid java.lang.NoSuchFieldError

EDIT: Я m теперь уверен, что это проблема с Android, потому что все правильно компилируется, но неправильно выполняется во время выполнения. При изменении на MyActivity.this.myField вместо простого myField все работает отлично.

BTW, я перепроверил, и у меня нет другого myField в другом месте. Кроме того, при открытии объявления в Eclipse он переходит в целевое поле (myField).

Единственная проблема заключается в том, что я не мог воспроизвести это в примере проекта. Мне остается только заявить, что это конкретная проблема в моем проекте, но я не хочу этого делать, и я не могу опубликовать этот проект.

Я буду держать это открытым в случае, если кто-то натыкается на что-то подобное.

Вот код, который я могу опубликовать, что разбивает мой проект, но не образец один:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    new Runnable() { 
     @Override 
     public void run() { 
      Toast.makeText(MyActivity.this, myField.getName(), Toast.LENGTH_SHORT).show(); 
     } 
    }.run(); 
} 
+0

Кто бы ни проголосовал за это, объясните причину, чтобы я мог предоставить лучший вопрос. –

+0

не знаю? .. но, пожалуйста, предоставьте код .......... –

+1

у вас есть голос (я не сделал), может быть, потому, что вы не добавили код, например, и без кода мы можем что-либо сделать , – Sajmon

ответ

0

кажется, что доступ поле с классом префикс решает эту проблему: MyActivity.this.myField

Странно. Я предполагаю, что это что-то с полевым разрешением Android во время исполнения.

+0

странно, что он скомпилирован. возможно, вы принудительно добавили кастинг в анонимный класс к внешнему классу? что-то вроде: ((MyActivity) this) .myField ...? –

+0

Нет, я не делал ничего подобного. Кроме того, в отладке я останавливаюсь на проблемной строке и вижу, что поле существует и имеет ожидаемое содержимое. Это так странно - я просто не могу воспроизвести его в новом проектном проекте. –

+0

, пожалуйста, разместите соответствующий код? это действительно очень странно. –

Смежные вопросы