2
안드로이드 스튜디오 3.1, 자바 1.8예외 조각에 데이터 바인딩을 사용 : 나는 데이터 바인딩을 사용하려고
". 지정된 아이가 이미 부모가이 먼저 자녀의 부모에 removeView()를 호출해야한다"
를여기 Settings.XML의 레이아웃 : 여기
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="handler"
type="com.myproject.SettingsFragment" />
</data>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.constraint.ConstraintLayout
android:id="@+id/contentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.constraint.ConstraintLayout
android:id="@+id/contactUsContainer"
android:layout_width="match_parent"
android:layout_height="50dp"
android:onClick="@{handler::onClickContactUs}">
<ImageView
android:id="@+id/contactUsImageView"
android:layout_width="28dp"
android:layout_height="28dp"
app:srcCompat="@drawable/ic_settings_contacts_us"
<TextView
android:id="@+id/contactUsTextView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/contact_us"/>
</android.support.constraint.ConstraintLayout>
</android.support.constraint.ConstraintLayout>
</FrameLayout>
</ScrollView>
</android.support.constraint.ConstraintLayout>
</layout>
단편 SettingsFragment.java :
public class SettingsFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
SettingsBinding binding = DataBindingUtil.setContentView(getActivity(), R.layout.settings);
binding.setHandler(this);
return binding.getRoot();
}
public void onClickContactUs(View view) {
}
}
하지만 오류 얻을 : 당신이 일반적으로 된 setContentView로 할 것 같은 방법은 (활동의 콘텐츠 뷰를 설정합니다 때문에 활동에 바인딩
FATAL EXCEPTION: main
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.view.ViewGroup.addViewInner(ViewGroup.java:3337)
at android.view.ViewGroup.addView(ViewGroup.java:3208)
at android.view.ViewGroup.addView(ViewGroup.java:3165)
at android.view.ViewGroup.addView(ViewGroup.java:3145)
android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1425)
android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740)
android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809)
android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:799)
android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2580)
android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2367)
android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322)
android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2229)
'addview를)'내 코드에서. – Alex