2个(或更多)按钮视图用于相同的onClick方法

时间:2016-08-11 05:28:33

标签: java android view onclick

我是Android初学者,并且想知道:

我可以将2个按钮链接到相同的,1个onClick方法(我可能会覆盖以接受2个额外参数,例如int btnId和View targetTextView)以确定调用该方法的按钮和然后更新哪个TextView文本?

例如: btn1将更新text_view_1上的文字 和btn2将更新text_view_2。

除了他们我们将链接到相同的方法:

public void generalOnClick(View view, String btnId, String textViewId){...}

3 个答案:

答案 0 :(得分:0)

将标记设置为按钮并使用onClick方法验证它是否已触发按钮单击事件,如果它不起作用则遵循以下技巧,

定义一个常用的方法,用于在按钮点击时执行的功能,使其成为常用功能。

为两个按钮定义独立的onclick事件,然后在调用上面创建的公共函数时传递一些唯一的参数并验证它。

答案 1 :(得分:0)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

<TextView
    android:id="@+id/one"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="One"
    android:onClick="btnClick"/>

<TextView
    android:id="@+id/two"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Two"
    android:onClick="btnClick"/>

</LinearLayout>

按钮点击您的活动中的功能

public void btnClick(View view) {
    TextView tv = (TextView)view;
    int id = tv.getId();
    if(id==R.id.one) {
        tv.setText("One Clicked");
    } else if(id==R.id.two){
        tv.setText("Two Clicked");
    }
}

答案 2 :(得分:0)

使用以下代码:

protected void onCreate(Bundle savedInstanceState)
{

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);        
        View.OnClickListener clickListener = new View.OnClickListener() {
        public void onClick(View v) {

            if(v.getId().Equals(btn1.getId())){
                //do your work here
            }
            else{
                //work for 2nd button
            }
        };

        btn1 = (Button)findViewById(R.id.btn_1);
        btn2 = (Button)findViewById(R.id.btn_2);
        btn1.setOnClickListener(clickListener);
        btn2.setOnClickListener(clickListener);
    }