我有一个属于活动“Activity_Joueurs”的片段。在这个片段中有一个对话框。因此,下面的代码在对话框中单击肯定:
((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();
}
}
)
答案 0 :(得分: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();
......etVoilà:独立活动。
答案 1 :(得分:-1)
您可以使用静态方法创建一个类来返回一个Dialog,然后可以从任何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();