onClickListener doesn't working in fragment

11,253

you can NOT access the UI element in onCreateView method - EVER

use onActivityCreated method , thats tell the fragment the activity is fully created and ready to interact

 @Override
        public void onActivityCreated(Bundle savedInstanceState) 
        {
            // TODO Auto-generated method stub
            super.onActivityCreated(savedInstanceState);

            Button b = (Button) v.findViewById(R.id.StartButton);
            b.setOnClickListener(new OnClickListener() {

               @Override
                public void onClick(View v) {
                                    }
                            });
        }
Share:
11,253
Admin
Author by

Admin

Updated on June 04, 2022

Comments

  • Admin
    Admin about 2 years
    public class MainFragment extends Fragment {
        public static final String TAG = MainFragment.class.getSimpleName();
        private static final String ABOUT_SCHEME = "settings";
        private static final String ABOUT_AUTHORITY = "main";
        public static final Uri ABOUT_URI = new Uri.Builder().scheme(ABOUT_SCHEME).authority(ABOUT_AUTHORITY).build();
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
    
            View v = inflater.inflate(R.layout.mainbutton, container, false);
    
            return v;
        }
    
    }
    

    According to below link: How to handle button clicks using the XML onClick within Fragments

    public class StartFragment extends Fragment implements OnClickListener{
    
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
    
            View v = inflater.inflate(R.layout.fragment_start, container, false);
    
            Button b = (Button) v.findViewById(R.id.StartButton);
            b.setOnClickListener(this);
            return v;
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.StartButton:
    
                    /* ... */
    
                    break;
            }
        }
    }
    

    source doesn't work too.

  • Ted
    Ted almost 9 years
    Actually, you can access the UI elements in the onCreateView method. I just tried it, and I get the EditText and do a .setText(...) on it, and it works perfectly. The click event, however, does not work.
  • Ted
    Ted almost 9 years
    Also, where do you get the 'v' varible from?