不能对来自Activity错误类型的非静态方法findViewById(int)进行静态引用



嗨,我在eclipse上制作计算器,我按照本教程所做的一切都与视频中完全相同,但由于某种原因,我得到了这个"不能从活动类型中静态引用非静态方法findViewById(int) "错误

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;
    }
}

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

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

如果你想从活动布局中获得视图,然后将其更改为getActivity().findViewById()

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

相关内容

最新更新