将多个侦听器设置为一个方法

时间:2015-01-22 19:57:16

标签: java android

我正在学习在android studio上开发android,我遇到了一个问题。

我有多个用于用户信息的EditText控件:名字,姓氏,地址,我希望它们在聚焦和失焦时表现相同。

例如,我的emailInput EditText控件有"电子邮件地址"作为其文本属性。当用户点击"电子邮件地址"消失,如果用户没有添加任何输入并离开控件"电子邮件地址"。这就是这个方法的作用:

private string emailAddress = "Email Address";
public void onFocusChange(View view, boolean focus)
{
           (EditText) email = (EditText) findViewById(R.id.emailInput);

           if(!focus && (email.getText()).equals(""))
           {
               email.setText(emailAddress);
           }
           else if(focus && (email.getText()).equals(emailAddress))
           {
               email.setText("");

            }

}

我有20个控件,我不想复制和粘贴相同的代码并更改变量。

我有两个问题:我可以获取调用onFocusChange方法的控件的id,这样第一行就变成了 - >

 (EditText) ctrl = (EditText) findViewById(R.id.(this.getId());

我可以添加一个新属性" Initial Text"到EditText控件,所以我可以得到这样的东西 - >

      if(!focus && (ctrl.getText()).equals(""))
       {
           ctrl.setText(ctrl.getInitialText());
       }
       else if(focus && (ctrl.getText()).equals(ctrl.getInitialText()))
       {
           ctrl.setText("");

        }

编辑:这有点像创建我自己的继承自EditText类的控件。我只是添加一个对象变量(初始文本)和一个方法(getInitialText)。我可以像这样创建自己的控件,并且在android studio中仍然具有拖放功能吗?

谢谢! :d

1 个答案:

答案 0 :(得分:2)

您描述的行为正是任何EditText上的android:hint属性所做的。

http://developer.android.com/reference/android/widget/TextView.html#attr_android:hint