如何在此Android Activity中使用findViewById()?

时间:2014-01-29 18:21:25

标签: android findviewbyid

我需要在此课程中使用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;
}

}

3 个答案:

答案 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;
  1. 即使您要分配内容视图,也只能在分配内容视图后使用findViewById()

  2. 如果您没有设置内容视图,只需拨打findViewById()上的View