Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android - Add code to a fragment

I am a beginner in coding for Android and i am trying to do an application with two fragments. Unfortunately, when i add code to set action to my layout, it makes my application crash, so i'm wondering where i should put my code on the fragment file. If i take out the function onCreate, the application doesn't crash and my layout is good.

Here is my code. Thank you so much for your answer.

public class FragmentOne extends Fragment{

    public static final String TAG = "FragmentOne";


    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = View.inflate(getActivity(), R.layout.fragmentone, null);

        return v;
    }

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final EditText etData = (EditText) getView().findViewById(R.id.etData);


    }
}
like image 295
William Avatar asked Dec 26 '22 23:12

William


1 Answers

First of all I can see a few mistakes in your code.First of all as @user1873880 mentioned, onCreate() is always called before onCreateView(), so you should consider dealing with your views in onCreateView(). Second mistake which I can see is that you are not creating your View as it's designed to be used on Fragment. In my opinion the way your Fragment should look is like this :

public class FragmentOne extends Fragment {

    private static final String TAG = "FragmentOne";

    public View onCreateView(LayoutInflater inflater, ViewGroup container,  Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);

        // create your view using LayoutInflater 
        return inflater.inflate(R.layout.fragmentone, container, false);
    }

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // do your variables initialisations here except Views!!!
    }

    public void onViewCreated(View view, Bundle savedInstanceState){
        super.onViewCreated(view, savedInstanceState);
        // initialise your views
        EditText etData = (EditText) view.findViewById(R.id.etData);
    }
}

Hope this helps you! : )

like image 67
hardartcore Avatar answered Jan 11 '23 20:01

hardartcore