Android - Java устанавливает глобальный контекст для другого класса - PullRequest
0 голосов
/ 12 июня 2018

Первая проблема - у меня есть класс Java с 500 строками.Это будет так плохо, поэтому я хочу разделить их.Я нашел решение в другом потоке stackoverflow, что мы можем передать контекст основного класса другому классу.

//main class
Public class Main{
 @Override
 Public void onCreate(Bundle inst)
 {  
  Super.onCreate(inst);
  ClassB bclass = new ClassB(this);
  bclass.setLayout();
 }
}

//B class
Public class ClassB{
 Activity act1;
 Public ClassB(Activity act)
 {
  act1 = act;
 }
 Public void setLayout()
 {
  this.act1.setContentView(R.layout.lay);
 }
}

Хорошо, это работает.Но как сделать act1 нашим основным контекстом?поэтому каждый раз, когда я хочу вызвать setContentView из ClassB, мне не нужно снова использовать act1

Редактировать 1: Надеюсь, я хочу сделать act1 контекстом по умолчанию для ClassB.Поэтому, когда я вызываю setContentView из ClassB, он напрямую вызывается для Main.setContentView

Потому что, если я просто вызываю setContentView из ClassB, я получаю NullPointerException.Это имеет смысл, поскольку у ClassB нет контекста

1 Ответ

0 голосов
/ 12 июня 2018

Не уверен, зачем ты это делаешь.Существуют способы сокращения строк одного Java-класса вместо сохранения ссылок на пользовательский интерфейс в других классах или визуализации пользовательского интерфейса другими классами.Вы можете инкапсулировать свою бизнес-логику (не пользовательский интерфейс) в другие классы, которые могут улучшить читабельность вашего кода, или в вашем случае, если у вас есть несколько операций с похожим поведением, вы можете создать базовый абстрактный класс действий и поместить весь базовый кодк этому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...