为什么需要将View类型的对象传递给此方法?

时间:2014-02-07 02:49:51

标签: android

<Button
    android:id="@+id/button1"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView1"
    android:layout_alignParentTop="true"
    android:text="@string/button1" 
    android:onClick="onClickButton"/>


public void onClickButton(View view){


    TextView textview = (TextView) findViewById(R.id.textView1);

    textview.setVisibility(View.VISIBLE);


}

这是在按下按钮时使文本出现在主活动界面中的代码。在“onClickButton”方法块中不使用它时,传递View对象有什么意义?我问这个是因为即使我没有在代码块中使用视图对象,如果我省略了参数,应用程序也会崩溃。

3 个答案:

答案 0 :(得分:4)

您的布局中可能包含多个按钮,并且您的活动代码中只有一个方法。在这种情况下,有必要区分不同的按钮。

这就是可以使用的地方。

public void onClickButton(View view){
    if(view.getId() == R.id.buttonSave){
        // Do something
    } else if(view.getId() == R.id.buttonCancel){
        // Do something else
    }
}

虽然,您可以通过为每种视图类型提供一种方法,将不同的方法绑定到不同的视图。

另一个用例可能是:

点击按钮后,你想要修改按钮本身,比如隐藏它,或者更改标签,那么你显然需要对该按钮的引用。

答案 1 :(得分:1)

  

当您在“onClickButton”方法块中不使用它时,在View类型的对象视图中传递是什么意思?

首先,Button Docs告诉你。其次,它可以在函数中使用。由于Button不是View唯一的clickable,因此使用View参数可以检查View类型以查看按下并执行其他操作。

答案 2 :(得分:0)

public void onClickButton(View view){
  TextView textview = (TextView)view;
  textview.setVisibility(View.VISIBLE);
}

如果您将视图直接传递给方法,这应该有效。