2013-03-07 3 views
0

Когда я нажимаю на кнопку button1Button Я не вижу никаких Toast. Я отключил событие EditText, и даже тогда я не вижу его. Класс «View1» является частью пейджера.Слушатель событий не работает в Фрагменте

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

Я бы посоветовал вам взглянуть на диаграмму Android жизненного цикла для Fragment.

Ваш так называемый метод OnCreate не вызывается, потому что это не onCreate обратный вызов Fragment. Чтобы избежать подобных ошибок, используйте аннотацию @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, он должен работать тогда