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(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);
} }

我认为问题是我正在尝试从另一个类(class)findViewById?当我在调用它的同一个类中拥有该方法时,它会起作用。

我试过public class PageBuilder extends Activity && AppCompatActivity。调用了该方法,但它不喜欢 LinearLayout ll = (LinearLayout) findViewById(R.id.empty);(empty.xml 确实存在并且在布局目录中)。

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

最佳答案

在你的 MainActivity 中

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);
}}

关于java - Android 从另一个类更新布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41653129/

相关文章:

java.security.KeyStore 仅显示 p12 文件中两个证书之一

java - 反射性地获取与特定 url 匹配的 Spring MVC Controller 列表

java - 在 Eclipse 中使用 Hibernate 创建数据库的专业工作流程是什么?

android - 处理不完整的下载文件

java - 从视频中仅捕获一张缩略图

java - 导入 Android 库 AAR - 无类定义

android - 如何将 repo 注入(inject) FirebaseMessagingService 类

android - 如何将动态按钮字符串的首字母大写

android - 表格包含的 XML 布局中的 ID

java - 抽象类和多态问题