无法从类型Activity错误中对非静态方法findViewById(int)进行静态引用

时间:2014-05-30 20:36:50

标签: android android-fragments

你好我在eclipse上制作一个计算器,我正在按照这个教程完成所有内容,就像在视频中一样,但由于某些原因我得到了这个"无法对非静态方法提出静态引用findViewById(int)from类型活动"错误

public PlaceholderFragment() {

    int counter;
    Button add, sub;
    TextView display;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container, false);
        counter = 0;
        add = (Button) findViewById(R.id.bAdd);
        sub = (Button) findViewById(R.id.bSub);
        display = (TextView) findViewById(R.id.tvDisplay);
        add.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                counter += 1;
                display.setText("Your total is " + counter);
            }
        });
        sub.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                counter -= 1;
                display.setText("Your total is " + counter);
            }
        });

        return rootView;
    }
}

1 个答案:

答案 0 :(得分:5)

Fragment类没有findViewById()方法;但Activity确实如此。编译器抱怨,因为这个Fragment是一个Activity的静态内部类,所以它认为你试图调用该方法。

如果您尝试从片段布局中获取视图,请将findViewById()更改为rootView.findViewById()

如果您尝试从“活动”布局中获取视图,请将其更改为getActivity().findViewById()

(这取决于bAdd按钮的实际位置。)