2011-11-27 6 views
14

조각 + RoboGuice 사용의 예를 찾는 데 문제가 있습니다. 문제는 Android 조각 트랜잭션 관리자로 조각을 추가/제거하려고 할 때 발생합니다. 일단 조각에 RoboFragment를 상속한다고 알려주면 트랜잭션 관리자는 더 이상 클래스가 조각이라고 생각하지 않습니다 (RoboFragment를 확장하기 때문에). 그러나 RoboGuice의 자체 조각 관리자를 사용할 수는 있지만 충돌이 발생합니다. RoboGuice 조각을 동적으로 추가/제거하는 예가 있습니까?roboguice와 android의 단편을 사용하는 간단한 예가 있습니까?

+0

RoboGuice와 Fragments는 앱에서 잘 작동합니다. 문제가 무엇인지 알 수 있도록 스택 추적을 제공 할 수 있습니까? –

+0

또한 어떤 버전의 호환성 라이브러리를 사용하고 있습니까? –

+0

나는 그 일을 너무했습니다. –

답변

13

나는 최근에 새로운 프로젝트에 조각을 사용하기 시작했으며, 다음은 내가 상속 아니에요 내가

을 사용하고 코드입니다 RoboFragment 클래스에서,하지만 난 정확히 다음과 같은 라인을 내 onCreate와 onViewCreated 메소드에 추가하여 똑같이하고있다. RoboFragment에서 상속하는 것은 다른 어떤 행동도해서는 안되며, 사실 RoboFragment의 모습입니다.

public void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    RoboGuice.getInjector(getActivity()).injectMembersWithoutViews(this); 
} 

public void onViewCreated(final View view, final Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    RoboGuice.getInjector(getActivity()).injectViewMembers(this); 
    // Do whatever with your injected views. 
} 

분명히 onCreateView도 구현했습니다.

내 액티비티에서는 FragmentActivity를 확장하여 compatibility package을 사용하고 있습니다. 참고로, API 레벨 11 이전과의 호환성이 필요한 경우 FragmentActivity를 사용해야합니다. 11 플러스 만 지원하는 경우 호환성 라이브러리가 필요하지 않거나 FragementActivity를 사용하지 않아도됩니다. 내 활동에서 다음을 사용하여 페이지에 조각을 추가합니다.

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
transaction.add(R.id.fragmentHolder, new MyFragment()); 
transaction.commit(); 

R.id.fragmentHolder 유형은 FrameLayout입니다.

모든 것이 잘 작동하며 내 조각 된 리소스와 뷰를 모두 사용할 수 있습니다. 완성을 위해 필자는 Android 2.2.1에 대한 compatibity-v4 라이브러리의 r6 버전과 함께 최신 2.0-SNAPSHOT의 roboguice를 사용하고 있습니다.

+0

감사합니다. 발견 한 코드가 있거나 실제로 의미있는 일을하는 조각을 사용할 수 있습니까? – danb

+1

나는 두렵지 만 단편의 활동으로 할 수있는 일은 할 수 있어야합니다. 유일하게 다른 부분은 하나의 Fragment에서 다른 Fragment로 직접 전달하지 않아야하는 데이터를 전달하는 것입니다. 이 방법을 사용한 방법은 onCreate()에서 getActivity() 유형을 확인하고 조각에서 데이터를 받아들이도록 만든 인터페이스를 확인하는 것입니다. 이 방법으로 액티비티는이 인터페이스를 구현하고 필요할 경우 데이터를 다음 조각으로 전달할 수 있습니다. – Kingamajick

+0

이 작업을 수행 하시겠습니까? Roboguice 2.0을 사용해 보았을 때 IllegalArgumentException가 발생했습니다 : MyFragmentActivity가 RoboGuice 컨텍스트 (instanceof RoboContext)로 보이지 않습니다. –

관련 문제