Android 在内部类中添加EditText

Android 在内部类中添加EditText,android,Android,我想从按钮onClick侦听器向当前活动(MainActivity.java&Activity_main.xml)添加一个EditText,我不知道如何通过代码获得布局,我已经尝试过了,但没有成功 package com.example.hythm.ui_practise; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import andr

我想从按钮
onClick
侦听器向当前活动(MainActivity.java&Activity_main.xml)添加一个
EditText
,我不知道如何通过代码获得布局,我已经尝试过了,但没有成功

package com.example.hythm.ui_practise;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final Button PlusButton=(Button) findViewById(R.id.ButtonOpPlus);
        final Button ButtonNo1=(Button) findViewById(R.id.no1);
        final Button ButtonNo2=(Button) findViewById(R.id.no2);
        final Button ButtonNo3=(Button) findViewById(R.id.no3);
        final Button ButtonNo4=(Button) findViewById(R.id.no4);
        final Button ButtonNo5=(Button) findViewById(R.id.no5);
        final Button ButtonNo6=(Button) findViewById(R.id.no6);
        final Button ButtonNo7=(Button) findViewById(R.id.no7);
        final Button ButtonNo8=(Button) findViewById(R.id.no8);
        final Button ButtonNo9=(Button) findViewById(R.id.no9);
        final TextView ResultTextView=(TextView)findViewById(R.id.Result);
        final Button CalculateButton=(Button) findViewById(R.id.Calculate);
        final TextView tempv=new TextView(this);
        CalculateButton.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        EditText NoOfInputsEditText=(EditText)findViewById(R.id.NoOfInputs);
                        int size = Integer.parseInt(NoOfInputsEditText.getText().toString()); // total number of TextViews to add
                        **RelativeLayout myLayout=(RelativeLayout)R.layout.activity_main;
                        EditText newEditText=new EditText(getBaseContext());
                        myLayout.addView(newEditText);**
                    }
                }
        );
    }
}

在进行修复之前,还有一个非常简单的解决方案

单击按钮(CalculateButton)时需要编辑文本的任何方式,因此在xml本身中创建一个编辑文本视图,在屏幕中需要编辑文本的任何位置创建该视图,并将“可见性”设置为“消失”

单击CalculateButton时,仅显示编辑文本

例:


在进行修复之前,还有一个非常简单的解决方案

单击按钮(CalculateButton)时需要编辑文本的任何方式,因此在xml本身中创建一个编辑文本视图,在屏幕中需要编辑文本的任何位置创建该视图,并将“可见性”设置为“消失”

单击CalculateButton时,仅显示编辑文本

例:


如果要在按钮上的版面中添加多个EditText,可尝试以下操作:

   // root_layout is the relative layout 
   final RelativeLayout layout = findViewById(R.id.root_layout);

    findViewById(R.id.test_button).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            RelativeLayout.LayoutParams[] params = new RelativeLayout.LayoutParams[4];
            EditText[] dynamicEditText = new EditText[4];
            for (int i = 1; i < 4; i++) {
                params[i] = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

                dynamicEditText[i] = new EditText(MainActivity.this);
                dynamicEditText[i].setId(i);
                dynamicEditText[i].setText("Edit Text "+i);
                if (i > 1) {
                    params[i].addRule(RelativeLayout.BELOW, dynamicEditText[i - 1].getId());
                }
                dynamicEditText[i].setLayoutParams(params[i]);
                layout.addView(dynamicEditText[i]);


            }

        }
    });
}
//root\u布局是相对布局
最终RelativeLayout布局=findViewById(R.id.root\u布局);
findviewbyd(R.id.test_按钮).setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
RelativeLayout.LayoutParams[]params=新的RelativeLayout.LayoutParams[4];
EditText[]dynamicEditText=新的EditText[4];
对于(int i=1;i<4;i++){
params[i]=新的RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_父级,ViewGroup.LayoutParams.WRAP_内容);
dynamicEditText[i]=新编辑文本(MainActivity.this);
dynamiceditext[i].setId(i);
动态文本[i].setText(“编辑文本”+i);
如果(i>1){
params[i].addRule(RelativeLayout.BELOW,dynamicEditText[i-1].getId());
}
DynamicEdit[i].setLayoutParams(params[i]);
layout.addView(dynamicEditText[i]);
}
}
});
}

如果要在按钮上的版面中添加多个编辑文本,请单击,您可以尝试以下操作:

   // root_layout is the relative layout 
   final RelativeLayout layout = findViewById(R.id.root_layout);

    findViewById(R.id.test_button).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            RelativeLayout.LayoutParams[] params = new RelativeLayout.LayoutParams[4];
            EditText[] dynamicEditText = new EditText[4];
            for (int i = 1; i < 4; i++) {
                params[i] = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

                dynamicEditText[i] = new EditText(MainActivity.this);
                dynamicEditText[i].setId(i);
                dynamicEditText[i].setText("Edit Text "+i);
                if (i > 1) {
                    params[i].addRule(RelativeLayout.BELOW, dynamicEditText[i - 1].getId());
                }
                dynamicEditText[i].setLayoutParams(params[i]);
                layout.addView(dynamicEditText[i]);


            }

        }
    });
}
//root\u布局是相对布局
最终RelativeLayout布局=findViewById(R.id.root\u布局);
findviewbyd(R.id.test_按钮).setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
RelativeLayout.LayoutParams[]params=新的RelativeLayout.LayoutParams[4];
EditText[]dynamicEditText=新的EditText[4];
对于(int i=1;i<4;i++){
params[i]=新的RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_父级,ViewGroup.LayoutParams.WRAP_内容);
dynamicEditText[i]=新编辑文本(MainActivity.this);
dynamiceditext[i].setId(i);
动态文本[i].setText(“编辑文本”+i);
如果(i>1){
params[i].addRule(RelativeLayout.BELOW,dynamicEditText[i-1].getId());
}
DynamicEdit[i].setLayoutParams(params[i]);
layout.addView(dynamicEditText[i]);
}
}
});
}