У меня есть два класса, до сих пор ..Android макет обновление от другого класса
MainActivity.java
public class MainActivity extends AppCompatActivity {
private PageBuilder pb = new PageBuilder();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.empty);
pb.mainMenu();
} }
PageBuilder.java
public class PageBuilder extends MainActivity {
public void mainMenu() {
LinearLayout ll = (LinearLayout) findViewById(R.id.empty);
LinearLayout.LayoutParams btnParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
Button btnOne = new Button(getApplicationContext());
btnOne.setLayoutParams(btnParams);
btnOne.setText("One");
ll.addView(btnOne);
Button btnTwo = new Button(getApplicationContext());
btnTwo.setLayoutParams(btnParams);
btnTwo.setText("Two");
ll.addView(btnTwo);
Button btnThree = new Button(getApplicationContext());
btnThree.setLayoutParams(btnParams);
btnThree.setText("Three");
ll.addView(btnThree);
} }
Я думаю, что вопрос что я пытаюсь сделать findViewById
из другого класса? Он работает, когда у меня есть метод в том же классе, что и он.
Я пробовал public class PageBuilder extends Activity
& & AppCompatActivity
. Вызывается метод, но он не нравится LinearLayout ll = (LinearLayout) findViewById(R.id.empty);
(пустое .xml существует и находится в директории layout).
Единственная реальная причина, по которой у меня есть эти методы в другом классе, - это чистота, но я бы подумал, что это довольно простой запрос.
'Я думаю, что проблема в том, что я пытаюсь findViewById из другого класса' да верно: передать 'this' в 'mainMenu (Activity activity)', используйте 'activity' для вызова findViewById, а также не нужно расширять' MainActivity' в 'PageBuilder', если это не активность –
' PageBuilder' выдает несколько ошибок '' can not resolve', если я удаляю ' extends'. Отправка операции дает мне ошибку «не может быть применена». Опять же, не знаю, чего мне не хватает – TomFirth