我使用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文件中定义的现有编辑文本创建多个编辑文本,但是当一个编辑文本获得焦点时,另一个编辑文本也会自动获得焦点。请帮忙.....
答案 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();