在onCreate之外执行onClick

时间:2016-05-04 01:15:16

标签: android fragment onclicklistener

我有一个按钮,我正在尝试在创建

外面perform Click ();

它是一个片段所以我所做的是:

public class MyFragment extends Fragment {
    private Button exit;

    public View onCreateView(LayoutInflater inflater, 
                             ViewGroup container,
                             Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.my_fragment, container, false); 
        exit = (Button) rootView.findViewById(R.id.exit);

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

       return rootView;
    }

我有一个方法

public void clicker(){
    exit .performClick();
}

我从另一个类手动调用clicker方法,但它会抛出

  

java.lang.NullPointerException:尝试调用虚方法   'null对象上的boolean android.widget.Toggle Button.performClick()'   参考

3 个答案:

答案 0 :(得分:1)

您最好的选择是将onClick中的任何内容放入方法中,然后调用该方法而不是exit.performClick

答案 1 :(得分:0)

include ':app',':library_name'

此错误表示您尝试单击java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.widget.Toggle Button.performClick()' on a null object reference 按钮,但未初始化。如果view为null,则无法单击。

最好的方法是,创建检查视图,初始化按钮,然后执行单击操作。

另一件事是exit是一个片段,您可以通过MyFragment访问此片段中的任何对象。只需声明一个接口,将该接口实现到该片段中,从该片段外部调用此接口方法。

快乐编码:)

答案 2 :(得分:0)

exit和performClick()之间是否有空格。 exit可能是一个关键字,这可能就是代码编译的原因。