2013-03-07 83 views
0

当我点击按钮1Button我看不到任何Toast。我禁用了EditText事件,即使这样我也看不到它。 类“View1”是pagerView的一部分。事件监听器不能在片段中工作

public class View1 extends Fragment{ 

    ImageView album; 
    Button b1; 

    public View1(){} 

    public void OnCreate(Bundle SavedInstanceState) { 
     super.onCreate(SavedInstanceState); 

       b1.findViewById(R.id.button1); 

       b1.setOnClickListener(new OnClickListener(){ 
         @Override 
         public void onClick(View v) { 
          Toast.makeText(getActivity().getApplicationContext(), "asdasd", Toast.LENGTH_SHORT).show();  
         } 
        }); 
    } 

     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      return inflater.inflate(R.layout.view1, container, false); 
    } 

回答

4

我劝你过目一个Fragment Android的生命周期图。

您所谓的OnCreate方法未被调用,因为它不是FragmentonCreate回调。为了避免这种类型的错误,请使用@Override注释和适当的方法来确保您重写该方法,而不是仅创建一个新方法。

即使你的方法会被称为你的代码会抛出一个NullPointerException因为你不初始化Button(它甚至没有创建为onCreateView回调onCreate后调用)。您的代码应该是这样的:

public class View1 extends Fragment { 

    ImageView album; 
    Button b1; 

    @Override 
    public void OnCreate(Bundle SavedInstanceState) { 
     super.onCreate(SavedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.view1, container, false); 
     b1 = (Button) v.findViewById(R.id.button1); 
     b1.setOnClickListener(new OnClickListener(){ 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(getActivity(), "asdasd", Toast.LENGTH_SHORT).show();  
      } 
     }); 
    } 
     return v; 
} 
0

您可以将您的收听到onCreateView或onActivityCreated,它应该工作,然后