조각 추가 또는 교체가 작동하지 않음
내 프로그램에 해당 코드를 입력하면 아래 그림과 같이 오류가 발생합니다.
오류에 대한 이유가 있습니까? The method replace(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, ExampleFragments)
내 주요 활동의 코드 :
public void red(View view) {
android.app.FragmentManager fragmentManager = getFragmentManager();
android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
ExampleFragments fragment = new ExampleFragments();
fragmentTransaction.replace(R.id.frag, fragment);
fragmentTransaction.commit();
}
ExampleFragments.java
package com.example.learn.fragments;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class ExampleFragments extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.blue_pill_frag, container, false);
}
}
여기:
package com.example.learn.fragments;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
여기에서 문제는 당신이 혼합하고 있다는 것입니다 android.support.v4.app.Fragment
및 android.app.Fragment
. 지원 라이브러리를 사용하려면 모든 용도를 변환해야합니다 getSupportFragmentManager()
. 이는 .
예를 들면 다음과 같습니다.
android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
ExampleFragments fragment = new ExampleFragments();
fragmentTransaction.replace(R.id.frag, fragment);
fragmentTransaction.commit();
지원 라이브러리 Fragment
와 노멀 Fragment
은 서로 바꿔서 사용할 수 없다는 점에 유의하는 것이 중요합니다 . 동일한 목적을 달성하지만 코드에서 서로 대체 할 수 없습니다.
이 질문에 대한 답이있을 수 있지만 겹치는 조각에 대한 해결책은 새로운 "Fragment"인스턴스를 사용하여 조각 ID (실제로는 xml에서 선언하는 FrameLayout ID가 골치 아픈 문제를 야기 함)를 가져 오는 것입니다.
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment fragment = new ExampleFragments();
fragmentTransaction.replace(R.id.frag, fragment);
fragmentTransaction.commit();
나는 해결책없이 포스트를 통해 얼마나 많은 시간을 보냈는지 말할 수 없다. 위의 댓글에 링크 된 다른 게시물을 읽었으며 누군가가 먼저 찾은 경우를 대비하여 거기에 대답하겠습니다.
를 받고있는 사람들을 ClassCastException
위해 이것도 시도하십시오. FragmentActivity
대신을 사용하여 올바른 라이브러리를 모두 추가하고 Fragment
코드에 getActivity (). getSupportFragmentManager를 사용하여 ListFragment에서 오류를 중지해도 여전히 Fragments에 문제가 발생합니다. Google 문서는 모든 것을 보여주지는 않습니다. Eclipse 코드 완성이 항상 당신을 구하는 것은 아닙니다 ... 때때로 당신은 버그를 직접 수정해야합니다 !!
내가 무엇을 시도해도 (여기에 적힌 것을 포함하여)이 대답을 볼 때 까지이 문제를 해결할 수 없었습니다.
https://stackoverflow.com/a/5907704/728312
이것은 나를 위해 일했다
android.app.FragmentManager fragmentManager = getActivity().getFragmentManager();
시도 해봐
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frag, new ExampleFragments()).commit();
참조 URL : https://stackoverflow.com/questions/11619573/fragment-add-or-replace-not-working
'developer tip' 카테고리의 다른 글
Android : 터치 이벤트가 뷰에서 그 아래에있는 뷰로 전달되는 것을 방지하는 방법은 무엇입니까? (0) | 2020.12.28 |
---|---|
PHP에서 배열 키의 이름을 바꾸는 방법은 무엇입니까? (0) | 2020.12.28 |
AngularJS ngRepeat 요소 제거 (0) | 2020.12.28 |
무엇입니까? : Kotlin에서 수행합니까? (0) | 2020.12.28 |
주어진 횟수만큼 다른 문자열을 반복하여 NSString 만들기 (0) | 2020.12.28 |