baj*_*sko 4 android listener android-fragments
我创建了ErrorDialogFragment,其中包含OnDialogClickListener参数.
需要显示ErrorDialogFragment的每个其他片段或活动都通过ErrorDialogFragment中的公共方法设置OnDialogClickListener.同时,所有这些活动和片段都实现了OnDialogClickListener.
如果用户在显示ErrorDialogFragment时从应用程序退出,则会出现问题,并在一段时间后返回(应用程序从内存中删除).如果用户单击片段选项,它将强制关闭,因为未设置OnDialogClickListener.
我错误地使用了activity-listener-fragment模式,我如何解决这个问题(应用程序已经处于测试阶段..大模式更改是不可接受的.
例如:
接口:
public interface OnDialogClickListener {
public void OnPositiveClick(int key, Object... args);
public void OnNegativeClick(int key, Object... args);
}
Run Code Online (Sandbox Code Playgroud)
活动:
public class Home extends FragmentActivity implements TabListener, ServiceConnection, OnDialogClickListener {
.
.
.
@Override
public void OnPositiveClick(int key, Object... args) {
//some actions
}
@Override
public void OnNegativeClick(int key, Object... args) {
//some actions
}
Run Code Online (Sandbox Code Playgroud)
分段:
public class ErrorDialogFragment extends DialogFragment implements OnClickListener {
OnDialogClickListener OnDialogClickListener = null;
.
.
.
public void setDialogListener(OnDialogClickListener listener)
{
OnDialogClickListener = listener;
}
@Override
public void onClick(DialogInterface dialog, int which) {
if(OnDialogClickListener != null){
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
this.dismiss();
OnDialogClickListener.OnPositiveClick(KEY, args);
break;
default:
this.dismiss();
OnDialogClickListener.OnNegativeClick(KEY, args);
break;
}
}
else
this.dismiss();
}
Run Code Online (Sandbox Code Playgroud)
你最好在DialogFragment#onAttach(Activity)回调中设置它,如下所示:
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mOnDialogClickListener = (OnDialogClickListener) activity;
} catch(ClassCastException e) {
throw new ClassCastException(activity.toString() + "must implement" + OnDialogClickListener.class.getSimpleName());
}
}
@Override
public void onDetach() {
super.onDetach()
mOnDialogClickListener = null;
}
Run Code Online (Sandbox Code Playgroud)
最后,显然,制作你的Activity工具OnDialogClickListener
| 归档时间: |
|
| 查看次数: |
7029 次 |
| 最近记录: |