如何为textview和按钮实现相同的操作?

时间:2014-09-18 07:43:09

标签: java android handler

当我按下文本编辑输入( s )时按下按钮,我想要发生同样的事情。

以下是用于文字修改的OnEditorActionListener的实施:

 private OnEditorActionListener clickedEnter = (new OnEditorActionListener()
 {
  @Override
  public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
      //implemtation of task1
      }
      return false;
  }
 });        

这是按钮的实现:

show.setOnClickListener(new View.OnClickListener()
        {
        @Override
        public void onClick(View v) 
        {
          //How can I call clickedEnter here?
        }
    }); 

原因是,我想要更少的代码和更容易的调试等。提前感谢。

4 个答案:

答案 0 :(得分:2)

编辑:

    final EditText editText = (EditText) findViewById(R.id.textView);
    editText.setOnEditorActionListener(clickedEnter);

    Button button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            editText.onEditorAction(EditorInfo.IME_ACTION_DONE);
        }
    });

这是我的xml:

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="200dp "
    android:text="Done!"/>

<EditText
    android:id="@+id/textView"
    android:inputType="text"
    android:singleLine="true"
    android:imeOptions="actionDone"
    android:textSize="30dp"
    android:textColor="#333"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:hint="Enter text"/>

取决于您希望在编辑器中调用的action

答案 1 :(得分:1)

你可以创建一个方法并在两个函数中调用它,或者在第一个方法中调用show.performClick()。

解决方案1:

private OnEditorActionListener clickedEnter = (new OnEditorActionListener()
{
  @Override
  public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
      yourMethod();
      }
      return false;
  }
});  

show.setOnClickListener(new View.OnClickListener()
{
        @Override
        public void onClick(View v) 
        {
          yourMethod();
        }
 }); 

private void yourMethod(){
      //Instructions
}

解决方案2:

private Button show;

private OnEditorActionListener clickedEnter = (new OnEditorActionListener()
{
  @Override
  public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
      show.performClick();
      }
      return false;
  }
});  

show.setOnClickListener(new View.OnClickListener()
{
        @Override
        public void onClick(View v) 
        {
          //Instructions...
        }
 }); 

答案 2 :(得分:0)

您可以为您的任务创建不同的方法,并在侦听器的两个事件中调用该方法。

答案 3 :(得分:0)

我想你想要这样的东西

etOne.setOnEditorActionListener(new TextView.OnEditorActionListener() {
                @Override
                public boolean onEditorAction(TextView v, int actionId,
                        KeyEvent event) {
                    if (actionId == EditorInfo.IME_ACTION_SEARCH) {
                        bSearch.performClick();
                        closeKeyboard(getActivity(),
                                etOne.getWindowToken());
                        return true;
                    }
                    return false;
                }
            });

bSearch.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
            //Do something..

            }
        });

现在按钮会//做一些事情..如果你想在用户按下键盘输入时也是如此,那就像按钮那样发生了......只需调用bSearch.performClick();希望它有帮助..

编辑:点击输入后,closeKeyboard(getActivity(),etOne.getWindowToken());也会自动隐藏软键盘。