0

나는 Google의 조각 튜토리얼로 작업하는 ActionBarSherlock을 얻으려고 노력해 왔으며 뷰에 "content"조각을 추가하려고 할 때 문제가 발생했습니다. 이 줄은Android ActionBarSherlock Fragment

getFragmentManager().beginTransaction().add(android.R.id.content, content).commit(); 

The method add(int, Fragment) in the type FragmentTransaction 
is not applicable for the arguments (int, ContentFragment) 

코드는 구글의 (http://developer.android.com/guide/components/fragments.html) 필요한 어디 SherlockActivity로 확장 한 것을 제외하고 동일합니다 다음과 같은 예외를 생성합니다. ContentFragment/Activity는 내가 세부 정보 활동이라고 부른 것입니다.

정상적인 예를 만들기 위해 ABS 참조를 모두 제거하더라도 동일한 문제가 발생합니다. 나는 안드로이드 지원 라이브러리와 관련이 있다고 느낀다. 그러나 내 인생을 생각할 수 없다.

+1

Android 지원 라이브러리를 사용하고 있습니까? ActionBarSherlock이 그것을 사용하기 때문입니다. "import android.support.v4.app.FragmentTransaction;" 귀하의 ContentFragment에도 동일하게 적용됩니다 (예 : android.support.v4.app.ListFragment;) 참조 http://developer.android.com/tools/extras/support-library.html – Frank

+0

그래서 SherlockFragment를 확장해야합니까? android.support.v4.app.Fragment? 지원 라이브러리가 포함되어 있다면 sherlockfragment를 사용해야 할 가능성이 더 높습니다.하지만 그건 내 추론입니다 ... – user1781468

+0

안녕하세요! 각 조각을 android.support.v4.app.Fragment로 확장해야한다고 생각합니다. 그러나 이러한 단편을 포함하는 활동은 SherlockFragmentActivity를 확장해야합니다. 나는이 방법으로 프로젝트를 만들었고 효과가 있었다. – Frank

답변

2

사용 getSupportFragmentManager() 대신 getFragmentManager()을.

0

조각 클래스는 어떻게 생겼습니까?

android.support.v4.app.FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
    FragmentADetail frag = new FragmentADetail(); 
    ft.replace(android.R.id.content, frag); 
    ft.addToBackStack(null); 
    ft.commit(); 

그리고 내 FragmentADetail 클래스는 다음과 같습니다 :이 코드는 나를 위해 잘 작동

public class FragmentADetail extends SherlockFragment { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    getSherlockActivity().getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    View v = inflater.inflate(R.layout.fragment_a_detail_layout, container, false); 
    v.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      //left empty on purpose to capture the onClick event. 
     } 
    }); 

    return v; 
} 

@Override 
public void onStop() 
{ 
    super.onStop(); 
    getSherlockActivity().getSupportActionBar().setDisplayHomeAsUpEnabled(false); 
} 

}

+0

이것은 좋은 예이지만 OP에서 조각을 뷰에 추가하려고합니다. 그것을 대체하지 않음 – Frank

관련 문제