我需要在此课程中使用findViewById激活和链接ImageButton,但它不会起作用。我知道这与不调用setContentView或扩展Activity有什么关系? findViewByID带有红色下划线并表示"方法findViewById(int)未定义类型BuyTicket" 它建议我将其创建为一种方法。
非常感谢任何帮助,谢谢!
package fyp.sbarcoe.tabsswipe;
public class BuyTicket extends Fragment
{
ImageButton dubBus, luas, dart ;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
dubBus = (ImageButton) findViewById(R.id.dubBus);
//dubBus.setOnClickListener(new View.OnClickListener() {public void onClick(View v){System.out.println("Dublin Bus");}});
View rootView = inflater.inflate(R.layout.fragment_buy, container, false);
return rootView;
}
}
答案 0 :(得分:2)
更改为
View rootView = inflater.inflate(R.layout.fragment_buy, container, false);
dubBus = (ImageButton) rootView.findViewById(R.id.dubBus);
它不是一个活动它是一个片段,你使用视图对象findViewById
来初始化你的视图。 findViewById
在当前膨胀的布局中查找视图
答案 1 :(得分:1)
View rootView = inflater.inflate(R.layout.fragment_buy, container, false);
dubBus = (ImageButton) rootView.findViewById(R.id.dubBus);
//dubBus.setOnClickListener(new View.OnClickListener() {public void onClick(View v){System.out.println("Dublin Bus");}});
答案 2 :(得分:1)
将您的代码更改为:
View rootView = inflater.inflate(R.layout.fragment_buy, container, false);
dubBus = (ImageButton) rootView.findViewById(R.id.dubBus);
dubBus.setOnClickListener(new View.OnClickListener() {public void onClick(View v){System.out.println("Dublin Bus");}});
return rootView;
即使您要分配内容视图,也只能在分配内容视图后使用findViewById()
。
如果您没有设置内容视图,只需拨打findViewById()
上的View
。