2012-06-10 3 views
0

나는 android.support.v4.app.DialogFragment를 확장하는 ActivityExitDialogFragment 클래스가 있습니다. ActivityExitDialogFragment, onCreateDialog 및 newInstance에는 ActivityExitDialogFragment의 새 인스턴스를 가져 오는 메서드가 2 개뿐입니다. 여기에 있습니다 :DialogFragment 표시

public Dialog onCreateDialog(Bundle savedInstanceState) { 
    String title = getArguments().getString("title"); 
Dialog myDialog = new AlertDialog.Builder(getActivity()) 
.setIcon(R.drawable.ic_launcher) 
.setTitle(title) 
.setNegativeButton("No", new DialogInterface.OnClickListener() { 

    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     // Dismiss the dialog. 
     dismiss(); 
    } 
    }) 
.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 

    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     // Close the Activity. 
     getActivity().finish(); 
    } 
}).create(); 

return myDialog; 
} 

static ActivityExitDialogFragment newInstance(String message) { 
ActivityExitDialogFragment dialog = new ActivityExitDialogFragment(); 
Bundle args = new Bundle(); 
args.putString("title", message); 
dialog.setArguments(args); 
return dialog; 
} 

그리고 대화 상자를 표시하는 데 사용되는 방법이 있습니다. 동일한 패키지에서 다른 활동을합니다. 사용자가 종료 버튼을 클릭 할 때 호출 :

public void cancelButton(View v) { 
    ActivityExitDialogFragment dialog =       
    ActivityExitDialogFragment.newInstance(exitMessage); 

    dialog.show(new FragmentActivity().getSupportFragmentManager(),    
    "Exiting"); 
} 

나는 내가 dialog.show 라인에서 IllegalStateException이를 얻을 종료 버튼을 클릭 할 때마다. 이전에이 문제가 있었는데 프로젝트 프로젝트의 libs 폴더에 android-support-v4.jar 파일이 없기 때문입니다. jar 파일을 libs 폴더에 넣었습니다. 클래스 이름을 ActivityExitDialogFragment로 변경하고 Eclipse에서 일치시킬 Java 파일의 이름을 변경했습니다. 그 이후로 나는이 예외를 다시 얻고 있습니다. 그 이름을 변경 한 후에 예외가 다시 발생하거나 일식이 공개 클래스의 이름과 일치하도록 jar 파일의 이름을 변경하는 다른 작업을 수행하는지 여부는 알지 못합니다. getInstance 메소드에 대한 액세스 수정 자 변경 시도, 안드로이드 지원 jar 파일의 새 사본 삭제 및 추가, 이전 이름으로 이름 변경, Google에서 몇 시간을 보냈지 만 아직 답변을 찾지 못함 .

+0

그리고 어떻게 그렇게할까요? –

+0

이렇게 : http://i.stack.imgur.com/uqJeW.png – Blundell

+0

15 명성이 필요하다고 대답하는 투표를 할 수 없습니다. –

답변

0

Activity를 new로 직접 인스턴스화해서는 안됩니다. 대신 당신이 가지고있는 활동에서 직접 조각 관리자를 얻으십시오 :

dialog.show(getSupportFragmentManager(),    
"Exiting"); 
+0

굉장히 도움이되었습니다. 나는 이것을했지만 처음에는 Activity 대신 FragmentActivity를 확장하기 위해 내 활동을 변경했으며 효과가있었습니다. 감사. –

관련 문제