将View对象作为Write方法中的参数传递

时间:2017-12-18 17:06:35

标签: android

我有以下代码示例在Android中执行写入文件:

public void Write(View v) {
    String contents = txt1.getText().toString();
    try {
       FileOutputStream f = openFileOutput(filename, Context.MODE_PRIVATE);
       PrintWriter w = new PrintWriter(f);
       w.println(contents);
       w.close();
       f.close();
    } catch (Exception e) {
       e.printStackTrace();     
    }
}

我的问题是,View对象(作为参数传递)做了什么,为什么有必要?我理解视图只是指Android中的UI对象,但我无法找到有关View对象在这里做什么的任何解释。

1 个答案:

答案 0 :(得分:0)

您现在知道,当您为视图定义onClickListener属性时,android会为您实现android:onClick="yourMethod"

即使是Button,您也无需将TextView置于任何视图中,并记住所有这些都是View的子类。

因此,Android为您实施onClickListener。您必须传递View作为参数。

对于您问题的Write方法,您对所点击的Button不感兴趣,因此未使用View。但是,如果有人希望在用户点击时更改Button's文字,请将View参数投放到Button然后再使用。请查看下面的示例,了解具有属性的Button

android:onClick="changeText"

将调用方法changeTextView参数是针对此案例Button传递的视图,因此该方法将为:

public void changeText(View view) {
    Button btn =(Button) view; //See how I have retrieved the Button by simply casting!
    btn.setText("I am clicked");
}