Android:通过扩展 XML 动态添加布局

标签 android xml android-layout

我正在尝试使用一种功能,在按下按钮时将布局添加到我的 View 中。 2 的 ID EditText布局中的 s 添加到 List<EditText> ,因此无论添加了多少个 XML 布局实例,我都可以访问它们。但是,我无法让它正常工作。

设置 View 的主要功能:

    ViewGroup view = null;
    TextView addressView;
    Button submit;
    ImageView addHeader;

    private int id = 0;
    private List<EditText> editTexts = new ArrayList<EditText>();


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.get);

        view = (ViewGroup) findViewById(R.id.getLayout);


        addressView = (TextView) view.findViewById(R.id.getAddress);
        submit = (Button) view.findViewById(R.id.getSubmit);
        addHeader = (ImageView) view.findViewById(R.id.getHeaderAdd);

        addHeader.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                addHeaderBox();
            }           
        });

我添加布局的函数:

private void addHeaderBox() {    
    LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    inflater.inflate(R.layout.get_param, view, false);

    EditText nameBox = (EditText) view.findViewById(R.id.getValue);
    EditText valueBox = (EditText) view.findViewById(R.id.getName);

    nameBox.setId(id++);
    valueBox.setId(id++);

    editTexts.add(nameBox);
    editTexts.add(valueBox);
}   

getValuegetName是两个 EditText 的 ID s 在我的布局中(不是主要的 getLayout )。

07-19 10:25:13.088: E/AndroidRuntime(32034): java.lang.NullPointerException
07-19 10:25:13.088: E/AndroidRuntime(32034):    at myapp.httprequest.free.GETActivity.addHeaderBox(GETActivity.java:96)
07-19 10:25:13.088: E/AndroidRuntime(32034):    at myapp.httprequest.free.GETActivity.access$0(GETActivity.java:88)
07-19 10:25:13.088: E/AndroidRuntime(32034):    at myapp.httprequest.free.GETActivity$1.onClick(GETActivity.java:65)

第 96 行是 nameBox.setId(id++)

最佳答案

尝试:

.......
View someView = inflater.inflate(R.layout.get_param, view, false);

EditText nameBox = (EditText) someView.findViewById(R.id.getValue);
EditText valueBox = (EditText) someView.findViewById(R.id.getName);
........ 

关于Android:通过扩展 XML 动态添加布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11563094/

相关文章:

java - 使用 mail-service.xml 与 Wildfly 8 在服务器启动时发送邮件 - IllegalStateException

java - XSLT 检查字符串是否在集合内

java - 如何在作为 xml 布局文件一部分的框架布局中创建 Canvas

android - 为什么键盘将 tabhost 提升到顶部?

android - Imageview不显示圆角

java - 将 APK 与动态应用程序属性文件 bundle 在一起?

android - Gradle Project Sync在Android Studio 2.3.1中失败

android - 使用方法 :- Manual notification or using Push Notification via web service

java - 如何读取带有 XML 内容的字符串的内容并将其保存为 XML

android - RxJava2 toList() 从不发射