- Нет
- Вы не можете
В Android существует два разных контекста.Один для вашего приложения (назовем его БОЛЬШИМ) и один для каждого представления (назовем его контекстом активности).
linearLayout - это представление, поэтому вам нужно вызвать контекст действия.Чтобы вызвать это из действия, просто назовите это.Так просто, не правда ли?
Когда вы используете
this.getApplicationContext();
Вы вызываете БОЛЬШОЙ контекст, который описывает ваше приложение и не может управлять вашим представлением.
AБольшая проблема с Android в том, что контекст не может вызвать вашу активность.Это большая проблема, чтобы избежать этого, когда кто-то начинает разработку Android.Вы должны найти лучший способ кодировать свой класс (или заменить «Контекст контекста» на «Активность действия» и при необходимости преобразовать его в «Контекст»).
С уважением.
Просто чтобы обновить мой ответ.Самый простой способ получить ваш Activity context
- это определить экземпляр static
в вашем Activity
.Например,
public class DummyActivity extends Activity
{
public static DummyActivity instance = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Do some operations here
}
@Override
public void onResume()
{
super.onResume();
instance = this;
}
@Override
public void onPause()
{
super.onPause();
instance = null;
}
}
А затем в ваших Task
, Dialog
, View
вы можете использовать такой код для получения Activity context
:
if (DummyActivity.instance != null)
{
// Do your operations with DummyActivity.instance
}