0

当我单击button1 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);
  }
4

2 回答 2

4

我建议您查看 Android 生命周期图表以获取Fragment.

您所谓OnCreate的方法没有被调用,因为它不是onCreatea 的回调Fragment。为了避免这种类型的错误,请使用@Override带有正确方法的注释,以确保您覆盖该方法,而不仅仅是创建一个新方法。

即使您的方法会被调用,您的代码也会抛出 aNullPointerException因为您没有初始化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;
}
于 2013-03-08T08:18:31.363 回答
0

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

于 2013-03-08T18:02:43.197 回答