문제

2011-07-06 6 views
8

나는 안드로이드 예를 따랐지만 나는 incomprehensive 오류가 있습니다문제

방법 쇼 (FragmentManager, 문자열)에서 :

void showDialog() { 
    DialogFragment newFragment = MyAlertDialogFragment.newInstance(); 
    newFragment.show(fm, "alert"); 
} 

public static class MyAlertDialogFragment extends DialogFragment { 
    public static MyAlertDialogFragment newInstance() { 
     MyAlertDialogFragment frag = new MyAlertDialogFragment(); 
     return frag; 
    } 

    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     return new AlertDialog.Builder(getActivity()).setTitle("test") 
       .setMessage("bla bla bla").create(); 
    } 
} 

newFragment.show(fm, "alert"); 나에게 오류를 반환합니다 유형 DialogFragment은 인수 (FragmentManager, 문자열)

누군가가 C 적용되지 입니다 도와 주시겠습니까?

답변

13

문제는 지원 패키지 FragmentManager을 사용해야하지만 getFragmentManager()으로 전화 할 때 기본 FragmentManager을 사용하고 있기 때문에 문제가됩니다. 변수 fm을 초기화 할 때 getSupportFragmentManager()으로 전화 해보십시오.

6

실제로 @Jacob이 말한 것처럼 네이티브 패키지가 아니라 Support 패키지의 DialogFragment를 포함시켜야합니다.

당신은 minSDK은 내가 지원 패키지를 사용하지 않았다 14로 설정되어 내 내 경우에 의해 수입 것을

import android.support.v4.app.DialogFragment; 
5

을 할 수 있습니다. 내 문제는 내가 지금처럼 잘못된 DialogFragment을 가져이었다 :

import android.support.v4.app.DialogFragment; 

내가이 그것을 변경하고 일했다 :

import android.app.DialogFragment;