2013-07-27 5 views
3

나는 안드로이드를 코딩하는 초보자이며 두 조각으로 응용 프로그램을 만들려고합니다. 불행히도, 내 레이아웃에 동작을 설정하는 코드를 추가하면 내 응용 프로그램이 손상되어 조각 파일에 코드를 넣어야하는 곳이 궁금합니다. onCreate 함수를 꺼내면 응용 프로그램이 충돌하지 않고 레이아웃이 좋습니다.안드로이드 - 조각에 코드 추가

여기 내 코드입니다. 당신의 대답에 대해 정말 고마워요.

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); 


    } 
} 

답변

0

이유는 onCreateonCreateView 전에 호출된다, 그래서 당신은 단지 onCreateView 콜백 후 전망을 조작 할 수 있습니다. 자세한 내용은 Fragment lifecycle here을 확인하십시오. 당신이 onCreateView()에 귀하의 의견을 다루는 고려해야 있도록 모든

5

먼저 내가 언급 @user1873880 모든 당신의 code.First에서 몇 가지 실수를 볼 수 onCreate()는 항상 onCreateView() 전에 호출된다. 두 번째 실수는 Fragment에서 사용하도록 설계되었으므로 View을 생성하지 않는다는 것입니다. 제 의견으로는 당신의 단편이 다음과 같이 나타나야합니다.

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); 
    } 
} 

희망이 있습니다. :)

+0

좋습니다! 당신은 매우 친절 하군요. 답 및 설명에 감사드립니다. 정말 도움이됩니다. =) – William

+0

올바른 대답이라면 받아 들여야합니다. :) – hardartcore

관련 문제