Страницы

Поиск по вопросам

пятница, 24 января 2020 г.

Ошибка при компиляции проекта: A reference to an enclosing class is requiered

#java #android


И так, делаю VPN клиент и получаю непонятную ошибку...


  A reference to an enclosing class is requiered


public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Запрос прав на подключение VPN...

        Intent intent = VpnService.prepare(MainActivity.this);
        startActivityForResult(intent, BIND_AUTO_CREATE);
    }


    // Права полученны...


    @Override
    protected void onActivityResult(int requestCode, int resultCode) {
        if (requestCode == BIND_AUTO_CREATE && resultCode == RESULT_OK) {
            VpnService.Builder bb = new VpnService.Builder();

        }
    }
}



  new VpnService.Builder()
  Этот кусок кода подкреслен красным..не компилиться!


Может ктото знает что нужно сделать?
Чего не хватает? И что я делаю не так.
    


Ответы

Ответ 1



Судя по всему, класс Builder – это внутренний (inner) класс класса VpnService. Инстанс внутреннего класса можно создать только в контексте внешнего класса. Тут два решения: либо объявить класс Builder статическим вложенным (static nested) классом (добавить модификатор static) – такие классы могут существовать отдельно от внешнего класса, либо создавать инстанс класса Builder в контексте класса VpnService (имея его инстанс). UPD: public class VpnService { public static class Builder { } } Теперь где-то извне можно создать инстанс билдера: VpnService.Builder builder = new VpnService.Builder();

Комментариев нет:

Отправить комментарий