Java Android从另一个类更新布局

Java Android从另一个类更新布局,java,android,Java,Android,到目前为止我有两节课 MainActivity.java public class MainActivity extends AppCompatActivity { private PageBuilder pb = new PageBuilder(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView

到目前为止我有两节课

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();
} }
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);
} }
PageBuilder.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();
} }
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);
} }
我想问题是我试图从另一个类中
查找dviewbyd
?当我的方法与调用的方法在同一个类中时,它就会工作

我尝试了
公共类PageBuilder扩展活动
&&
AppCompatActivity
。调用了该方法,但它不喜欢
LinearLayout ll=(LinearLayout)findViewById(R.id.empty)(empty.xml确实存在并且在布局目录中)

我在另一个类中使用这些方法的唯一真正原因是为了清洁,但我认为这是一个非常基本的要求。

在你的活动中

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    PageBuilder obj = new PageBuilder(this);
    obj.mainMenu();
}}
在PageBuilder.java中

public class PageBuilder {

Context mContext;
PageBuilder(Context mContext){
    this.mContext = mContext;
}

public void mainMenu() {
    LinearLayout ll = new LinearLayout(mContext);
    LinearLayout.LayoutParams llP = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
    ll.setLayoutParams(llP);
    ll.setOrientation(LinearLayout.VERTICAL);
    LinearLayout.LayoutParams btnParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);

    Button btnOne = new Button(mContext.getApplicationContext());
    btnOne.setLayoutParams(btnParams);
    btnOne.setText("One");
    ll.addView(btnOne);

    Button btnTwo = new Button(mContext.getApplicationContext());
    btnTwo.setLayoutParams(btnParams);
    btnTwo.setText("Two");
    ll.addView(btnTwo);

    Button btnThree = new Button(mContext.getApplicationContext());
    btnThree.setLayoutParams(btnParams);
    btnThree.setText("Three");
    ll.addView(btnThree);
    Activity activity = (Activity)mContext;
    activity.setContentView(ll);
}}

我认为问题在于我试图从另一个类中查找dviewbyid?
是的,对:将
传递到
主菜单(活动)
,使用
activity
调用findViewById,如果不是activity
PageBuilder
则不需要在
PageBuilder
中扩展
MainActivity
,如果删除
extends
,则抛出大量
无法解决的
错误。发送“活动”时出现错误
无法应用
。再次不确定我错过了什么是的,这真的太简单了:)