事件监听器不在Fragment中工作

时间:2013-03-07 13:38:27

标签: android android-fragments android-fragmentactivity

当我点击按钮1 Button时,我看不到任何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);
  }

2 个答案:

答案 0 :(得分:4)

我建议您查看一下Fragment的Android生命周期图表。

未调用您所谓的OnCreate方法,因为它不是onCreate的{​​{1}}回调。为了避免这类错误,请使用Fragment注释和正确的方法来确保覆盖方法而不只是创建一个新方法。

即使您的方法被调用,您的代码也会抛出@Override,因为您没有初始化NullPointerException(因为Button回调是在onCreateView之后调用。您的代码应如下所示:

onCreate

答案 1 :(得分:0)

您可以将您的监听器移动到onCreateView或onActivityCreated,它应该可以工作