以编程方式创建的编辑文本也在获取焦点,同时在android中点击另一个编辑文本

时间:2015-05-04 10:25:11

标签: android android-layout android-edittext

我使用XML文件中提供的现有编辑文本以编程方式创建了多个编辑文本,但是当主编辑文本获得焦点时,动态创建的编辑文本也会获得焦点。我的代码如下:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_worker_reg);
        existingContact = (EditText)findViewById(R.id.workerPhone);
        drawable = existingContact.getBackground();
    }

 public void addAnotherContactNumber(View view) {
        final CharSequence[] options = { "Work", "Home","Cancel" };
        AlertDialog.Builder builder = new     AlertDialog.Builder(WorkerRegActivity.this);
        builder.setTitle("Add Contact Number!");
        builder.setItems(options, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int item) {
                if (options[item].equals("Work"))
                {
                    linearLayout =     (LinearLayout)findViewById(R.id.containerLayout);
                    EditText newContact = new EditText(WorkerRegActivity.this);
                    newContact.setHint("Phone NO." + (newContactIndex - 1));
                        newContact.setHintTextColor(existingContact.getHintTextColors());
                    newContact.setInputType(existingContact.getInputType());
                    newContact.setLayoutParams(existingContact.getLayoutParams());

                    int sdk = android.os.Build.VERSION.SDK_INT;
                    if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
                        newContact.setBackgroundDrawable(drawable);
                    } else {
                        newContact.setBackground(drawable);
                    }

                    linearLayout.addView(newContact, newContactIndex);
                    newContactIndex += 1;

                    contactList.add(newContact);

                }
                else if (options[item].equals("Home"))
                {

                }
                else if (options[item].equals("Cancel")) {
                    dialog.dismiss();
                }
            }
        });
        builder.show();
    }

实际上我想使用具有相同背景的XML文件中定义的现有编辑文本创建多个编辑文本,但是当一个编辑文本获得焦点时,另一个编辑文本也会自动获得焦点。请帮忙.....

2 个答案:

答案 0 :(得分:1)

添加新的editTexts时,只需添加一个关闭焦点的属性行:

private ArrayList<LatLong> latLongList = new ArrayList<>();

@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response storeData(Data data) {

    String macD = data.getMac();
    int routeD = data.getRoute();
    float latD = data.getLatitude();
    float longD = data.getLongitude();

    latLongList.add(new LatLong(latD, longD));
}

其中edittext是您的edittext的ID。

如果这不起作用,您可以使用:

edittext.clearFocus();

这只是一种解决方法,可以让android专注于编辑文本以外的其他内容。但是,请记住,您必须在想要撤消焦点的editText之前放置虚拟元素。

答案 1 :(得分:0)

在做这样的事情时,我们应该使用不同的drawable对象而不是同一个实例。

Drawable clone = drawable.getConstantState().newDrawable();