嗨,我在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
按钮的实际位置)