Android - 属于2个活动的片段中的对话框
问题描述:
我得到属于活动“Activity_Joueurs”的片段。在这个片段中有一个对话框。因此,下面的代码在对话框正向点击:Android - 属于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();
}
}
)
答
你应该开始与Interfaces
工作,而不是铸造它的具体的类,像你现在在做的活动:
((Activity_Joueurs) getActivity()).doPositiveClick();
...你先定义一个接口:
public interface IFragmentCallback {
public void doPositiveClick();
}
...然后你让你的activites实现这个接口,例如Activity_Joueurs
:
public Activity_Joueurs extends Activity implements IFragmentCallback{
//...
@Override
public void doPositiveClick(){
//Implementation
}
}
...下一页你Dialog
更改调用是这样的:
((IFragmentCallback) getActivity()).doPositiveClick();
...等瞧:活动无关。
答
您可以使用静态方法创建一个类以返回一个对话框,然后可以从任何Activity中调用它。
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();
非常感谢如下!效果很好。留言Merci。 – Phil