Как открыть активность с помощью getApplicationContext()?

Я использую нижнее меню навигации, на каждом itemMenu я вызываю функцию, чтобы открыть правильное действие:

//In the  activty "A" where there's the bottom nav bar:

HelpActivity help = new HelpActivity();

                case R.id.navigation_home:
                help.openHomeActivity();

В HelpActivity

public void openHomeActivity(){

    Intent i = new Intent(getApplicationContext(), HomeActivity.class);
    startActivity(i);
}

Приложение вылетает, подскажите пожалуйста, как решить?

Ошибка

java.lang.NullPointerException: попытка вызвать виртуальный метод android.content.Context android.content.Context.getApplicationContext() для нулевой ссылки на объект


person Machine    schedule 01.05.2018    source источник
comment
Приложение вылетает, тогда какая ошибка внутри logcat ??? Разместите это здесь. А также проверьте внутри манифеста, который вы объявили HomeActivity или нет.   -  person Jay Rathod RJ    schedule 01.05.2018


Ответы (1)


HelpActivity help = new HelpActivity();

Никогда не создавайте экземпляр действия самостоятельно.

Измените openHomeActivity() на:

public void openHomeActivity(Context context){

    Intent i = new Intent(context, HomeActivity.class);
    startActivity(i);
}

Затем, когда вы вызываете его, передайте уже существующий Context, например Activity, у которого есть нижний вид навигации.

person CommonsWare    schedule 01.05.2018
comment
Но как вызвать openHomeActivity()? - person Machine; 01.05.2018
comment
@Machine: поместите openHomeActivity() в класс, где находится блок switch с материалом case R.id.navigation_home. Или избавьтесь от метода и просто вызовите startActivity() из блока case R.id.navigation_home. - person CommonsWare; 01.05.2018
comment
Я не знал, что мы можем вызвать startActivity() не по назначению, теперь я могу использовать classHelp, большое спасибо за вашу помощь и время - person Machine; 01.05.2018