2014-02-06 2 views
1

Я написал простую одну строку, чтобы получить контекст приложения в android.Ошибка в контексте в Android?

Нет ничего другого, кроме нового проекта с одним видом деятельности.

Я написал этот код в onCreate Method.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Context context = getContext(); 
} 

Он просит меня заменить getContext на getBaseContext.

Почему я не могу использовать только getContext, поскольку он присутствует?

+1

, где у вас есть код в деятельности? – Raghunandan

+0

Я уже писал в методе OnCreate. –

+0

, то просто используйте 'getApplicationContext()' – Raghunandan

ответ

0

В общем, существует два типа классов. Которые расширяют класс ContextWrapper (Activity, Service, Application) и те, которые не расширяют его (например, View).

Если класс расширяет ContextWrapper, вы можете использовать его как Контекст. Обычно такие классы не имеют метода getContext(). Те классы, которые не расширяют ContextWrapper, но сохраняют и используют Context, обычно открывают функцию getContext(). И вы не можете использовать это как Контекст в таких случаях.

И эти два случая являются взаимоисключающими. По крайней мере, я не помню классы, которые расширяют ContextWrapper и имеют getContext одновременно.

coutesy: @inazaruk

getContext() is not defined for a class that extends an Activity 
+0

Контекстный контекст = View.getContext(); Ошибка снова. –

+0

извините за это. прочитай заново. –

0

Контекст содержит информацию о Actvity или приложения для вновь созданных компонентов. И будьте более конкретными в получении вашего предполагаемого Контекста, будь то для вашего View/whole Activity/вы пытаетесь получить ContextWrapper.

Попробуйте подробнее getContext API

1

Пожалуйста, ваше понимание ясно андроид context-

getContext() or View.getContext(): Возвращает контекст вид бежит в, с помощью которого он может получить доступ к текущей теме, ресурсы и т.д.

getApplicationContext() or Activity.getApplicationContext(): Сфера применения связана с применением и всегда будет одинаковой на протяжении всего жизненного цикла.

Context.getBaseContext(): не следует использовать, просто используйте Контекст вместо него, который связан с деятельностью и может быть уничтожен при уничтожении этой деятельности.

Ищите пожалуйста this blog-post, чтобы избежать проблем с утечкой памяти в контексте Android.

(Вы можете встретить так много, но вы должны выбрать то, что подходит вашей потребности)

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