2013-05-27 1 views
0

"Activity_Joueurs"액티비티에 속한 단편이 있습니다. 이 부분에는 대화 상자가 있습니다. 대화 상자에 긍정적 클릭 아래 따라서 코드 :안드로이드 - 2 개의 액티비티에 속한 단편의 대화 상자

((Activity_Joueurs) getActivity()) .doPositiveClick()이 잘 작동

. 이제이 조각을 다른 활동 "Activity_Pseudo"에서 재사용하고 싶습니다. 그리고 그것은 내가 붙어있는 곳입니다. 코드 활동의이 부분을 어떻게 독립적으로 만들 수 있습니까?

@Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     return new AlertDialog.Builder(getActivity()) 
       .setIcon(R.drawable.ic_launcher) 
       .setTitle(R.string.question_delete_joueur) 
       .setPositiveButton(R.string.yes, 
         new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int whichButton) { 
         ((Activity_Joueurs) getActivity()).doPositiveClick(); 
        } 
       } 
         ) 

답변

1

당신은 Interfaces 작업 대신에 당신이 순간에 그것을 할 것처럼 콘크리트 클래스,의에 활동 캐스팅을 시작한다 : 먼저 인터페이스를 정의 ...

((Activity_Joueurs) getActivity()).doPositiveClick(); 

을 :

public interface IFragmentCallback { 
    public void doPositiveClick(); 
} 

... 당신은 둘 다 당신의하는 행동이이 Activity_Joueurs이 인터페이스, 예를 구현하자

public Activity_Joueurs extends Activity implements IFragmentCallback{ 
    //... 
    @Override 
    public void doPositiveClick(){ 
    //Implementation 
    } 
} 

... 다음에 Dialog 당신이 이런 식으로 전화를 변경합니다

((IFragmentCallback) getActivity()).doPositiveClick(); 

... 등 자보세요 : 활동 독립.

+0

많은 감사를 다음과 같이 사용할 수 있습니다! 잘 작동합니다. 메르시. – Phil

-1

정적 메서드를 사용하여 클래스를 만들어 대화 상자를 반환하면 모든 활동에서 호출 할 수 있습니다.

class MyAlerts{ 

    public static Dialog getAlert1(Activity activity, DialogInterface.OnClickListener listener){ 
     return new AlertDialog.Builder(activity) 
      .setIcon(R.drawable.ic_launcher) 
      .setTitle(R.string.question_delete_joueur) 
      .setPositiveButton(R.string.yes, listener).create; 

    } 

} 

그것은 어떤 활동에서

MyAlerts.getAlert1(this, new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      // do something 

     } 
    }).show(); 
관련 문제