다른 문제를 디버깅하는 동안 중 하나의 onCreateView
메서드가 두 번 호출되고 있다는 것을 깨달았습니다. 프로그래밍에 익숙하지 않고 액티비티이로드 될 때 android
이이 메서드를 호출하는 방법을 완전히 이해하지 못하고 있지만 두 번 호출되는 것 같지 않습니다. 대부분의 코드를 삭제해도 여전히 내 System.out
메시지가 두 번 표시됩니다.onCreateView 메서드가 두 번 호출되는 이유는 무엇입니까?
public class AddCourse extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_course);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new AddCourseFragment()).commit();
}
}
public static class AddCourseFragment extends Fragment {
View rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_add_course,
container, false);
System.out.println("I see this TWICE!!!!");
return rootView;
}
}
}
이 거의 정확하게 내 주요 활동 구현 비슷하지만 하나를 두 번 onCreateView
을 통과하지 않습니다. 생각? 두 번 조각을 추가하는 것처럼
내 activity_add_course XML이 요청 된 ...
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment android:name="com.NsouthProductions.gradetrackerpro.AddCourse$AddCourseFragment"
android:id="@+id/AddCourseFrag"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
당신은 당신의 activity_add_course 레이아웃 파일을 공유 할 수 있습니까? – brwngrldev
@adavis, 레이아웃 파일을 추가했습니다. 레이아웃 파일이 기본적으로 조각 클래스를 호출하기 때문에 이런 일이 발생합니까? 두 번 전화하는 것을 어떻게 중단해야합니까? – NSouth
은 조각을 두 번 추가하는 것처럼 보입니다. xml에 선언하면 프로그래밍 방식으로 추가 할 필요가 없습니다. – brwngrldev