不能在public void函数中使用findViewById方法

时间:2018-01-31 22:56:35

标签: java android

即时通讯在android中使用片段我在这个片段中有一个CustomersFragment名称的片段使用findViewById方法我在onCreateView上使用此方法没问题,但是当我使用{时{1}}函数有错误,这是我底部的片段代码

public void

1 个答案:

答案 0 :(得分:4)

Android开发人员通常使用两个名为findViewById()的方法。其中一个是Activity类的一部分,通常像这样调用:

public void myMethod() {
    View myView = findViewById(R.id.myView);
}

另一个是View类的一部分,通常像这样调用:

public void myMethod(View root) {
    View myView = root.findViewById(R.id.myView);
}

但是,findViewById()类中没有Fragment方法,因此您必须使用View方法。您已经在onCreateView()

中执行此操作
@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) {
    final View view = inflater.inflate(R.layout.fragment_customers, null);
    Button btnAdd = (Button) view.findViewById(R.id.btn_add);
                             ^^^^^^^^^^^^^^^^^

然而,稍后你就有了这个:

public void editEmployee(Employee employee) {
    findViewById(R.id.lin_add_search).setVisibility(View.GONE);
    ^^^^^^^^^^^^

同样,Fragment类没有findViewById()方法,所以这不会编译。通常,解决方法是调用getView().findViewById()getView()方法返回从View返回的相同onCreateView()实例,因此它可以正常工作。

这样的事情:

public void editEmployee(Employee employee) {
    getView().findViewById(R.id.lin_add_search).setVisibility(View.GONE);