你好我在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;
}
}
答案 0 :(得分:5)
Fragment
类没有findViewById()
方法;但Activity
确实如此。编译器抱怨,因为这个Fragment是一个Activity的静态内部类,所以它认为你试图调用该方法。
如果您尝试从片段布局中获取视图,请将findViewById()
更改为rootView.findViewById()
。
如果您尝试从“活动”布局中获取视图,请将其更改为getActivity().findViewById()
。
(这取决于bAdd
按钮的实际位置。)