Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中向自定义对话框动态添加组件_Android_Dialog_Dynamically Generated_Customdialog - Fatal编程技术网

在Android中向自定义对话框动态添加组件

在Android中向自定义对话框动态添加组件,android,dialog,dynamically-generated,customdialog,Android,Dialog,Dynamically Generated,Customdialog,在下面的用例中,我需要你的帮助在Android中做一些事情。 我在Android中创建了一个自定义对话框,其布局为: dialog_threshold.xml 在“活动”中,当我单击特定按钮时,我有如下内容,以创建自定义对话框: setThreshold_button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {

在下面的用例中,我需要你的帮助在Android中做一些事情。 我在Android中创建了一个自定义对话框,其布局为: dialog_threshold.xml


在“活动”中,当我单击特定按钮时,我有如下内容,以创建自定义对话框:

setThreshold_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder mBuilder = new AlertDialog.Builder(DiseaseActivity.this);
                //Inflate the custom layout
                View mView = getLayoutInflater().inflate(R.layout.dialog_threshold, null);

                //Set title for dialog
                mBuilder.setTitle("Set thresholds for your target");
                //Define the spinner inside your custom layout
                final Spinner mSpinner = (Spinner) mView.findViewById(R.id.spinner_threshold); //because it doesn't exist in the main layout, but only in the custom layout
                //Define the ArrayAdapter
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(DiseaseActivity.this,
                        android.R.layout.simple_spinner_item,
                        getResources().getStringArray(R.array.threshold_choices));
                adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                mSpinner.setAdapter(adapter);

                if (!mSpinner.getSelectedItem().toString().equalsIgnoreCase("Choose a threshold option")) {
                    String ThresholdSelection = mSpinner.getSelectedItem().toString();
                }
                mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                        if ((dialog2 != null) && dialog2.isShowing() && !mSpinner.getSelectedItem().toString().equalsIgnoreCase("Choose a threshold option")) {
                            dialog2.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true);

                        } else {
                            dialog2.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
                        }
                    }

                    @Override
                    public void onNothingSelected(AdapterView<?> parent) {

                    }
                });

                //Set the positive and negative button for the custom dialog
                mBuilder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        disease.setThreshold(mSpinner.getSelectedItem().toString());

                        if (!mSpinner.getSelectedItem().toString().equalsIgnoreCase("Choose a threshold option")) {
                            Toast.makeText(DiseaseActivity.this,
                                    mSpinner.getSelectedItem().toString(),
                                    Toast.LENGTH_SHORT)
                                    .show();
                            setInterval_button.setEnabled(true);
                        }
                    }
                });
                mBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        dialogInterface.dismiss();
                    }
                });
                mBuilder.setView(mView);
                dialog2 = mBuilder.create();
                dialog2.show();
                dialog2.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);

            }
        });
setThreshold\u按钮。setOnClickListener(新视图。OnClickListener(){
@凌驾
公共void onClick(视图v){
AlertDialog.Builder mBuilder=新建AlertDialog.Builder(DiseaseActivity.this);
//对自定义布局进行充气
View mView=GetLayoutFlater()。充气(R.layout.dialog\u阈值,null);
//设置对话框的标题
setTitle(“为您的目标设置阈值”);
//在自定义布局中定义微调器
最终微调器mSpinner=(微调器)mView.findviewbyd(R.id.Spinner_threshold);//因为它不存在于主布局中,而仅存在于自定义布局中
//定义ArrayAdapter
ArrayAdapter=新的ArrayAdapter(DiseaseActivity.this,
android.R.layout.simple\u微调器\u项,
getResources().getStringArray(R.array.threshold_选项));
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
mSpinner.setAdapter(适配器);
如果(!mSpinner.getSelectedItem().toString().equalsIgnoreCase(“选择阈值选项”)){
字符串ThresholdSelection=mSpinner.getSelectedItem().toString();
}
mSpinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
if((dialog2!=null)&&dialog2.isShowing()&&&!mSpinner.getSelectedItem().toString().equalsIgnoreCase(“选择阈值选项”)){
对话框2.getButton(AlertDialog.BUTTON_正数)。setEnabled(真);
}否则{
对话框2.getButton(AlertDialog.BUTTON_正片)。setEnabled(假);
}
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
//设置自定义对话框的正负按钮
mBuilder.setPositiveButton(“确定”,新的DialogInterface.OnClickListener(){
@凌驾
公共void onClick(DialogInterface,inti){
疾病设置阈值(mSpinner.getSelectedItem().toString());
如果(!mSpinner.getSelectedItem().toString().equalsIgnoreCase(“选择阈值选项”)){
Toast.makeText(DiseaseActivity.this,
mSpinner.getSelectedItem().toString(),
吐司,长度(短)
.show();
setInterval_按钮。setEnabled(真);
}
}
});
mBuilder.setNegativeButton(“取消”,新建DialogInterface.OnClickListener(){
@凌驾
公共void onClick(DialogInterface,inti){
dialogInterface.dismise();
}
});
mBuilder.setView(mView);
dialog2=mBuilder.create();
dialog2.show();
对话框2.getButton(AlertDialog.BUTTON_正片)。setEnabled(假);
}
});
我现在要做的是在上面的对话框显示之前动态地添加其他组件(如EditText或TextView)。 我怎么做


提前谢谢

只需创建自定义视图>>找到父视图(要添加到哪个视图组中)>>>>并添加它例如:-

mView.addView(new TextView(ActivityContext),LayoutParamss);
mBuilder.setView(mView);

嗨,谢谢你的回答。我是否只需要添加这两行代码就可以了?你能告诉我更多的细节吗?我不明白对不起-你能帮我吗?@Giulio。。我的意思是,你需要先创建一个
视图
或文本视图或whtvr。。然后找到要添加该视图的父视图组(例如:-
mView.findViewById
)。然后只需调用
yourParentView.addView(您的新视图)。就是这样。视图ID和单击listener如何?@Manny265在这种情况下,请使用Object not anonymous创建视图,并为视图设置一个标记,以便以后可以找到该视图,还可以设置setClickListener。
mView.addView(new TextView(ActivityContext),LayoutParamss);
mBuilder.setView(mView);