【发布时间】:2014-07-16 06:42:20
【问题描述】:
我在我的应用程序中使用Fragments 和DialogFragments。我也想支持各种语言。当用户更改语言环境时,Fragment 会相应更新。但是DialogFragment 被解雇了!
我尝试过setRetainInstance(true);,但这正在杀死处于活动状态的对话框。
我的MainFragment:
public class MainFragment extends Fragment implements OnClickListener {
Button mButton;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_layout, container, false);
mButton = (Button) v.findViewById(R.id.button1);
mButton.setOnClickListener(MainFragment.this);
return v;
}
void showDialog() {
CustomDialog newFragment = CustomDialog.newInstance();
newFragment.listner = new ISubmitListner() {
@Override
public void onButtonClick() {
Toast.makeText(getActivity(), " OK pressed", Toast.LENGTH_LONG).show();
}
};
newFragment.show(getFragmentManager(), "dialog");
}
@Override
public void onClick(View v) {
showDialog();
}
}
我的CustomDialog:
public class CustomDialog extends DialogFragment {
ISubmitListner listner;
public static CustomDialog getInstance(Bundle bundle) {
CustomDialog dialog = new CustomDialog();
dialog.setArguments(bundle);
dialog.setCancelable(false);
return dialog;
}
static CustomDialog newInstance() {
return new CustomDialog();
}
private ProgressDialog mProgressDialog;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
mProgressDialog = new ProgressDialog(getActivity());
mProgressDialog.setView(new View(getActivity()));
mProgressDialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
mProgressDialog.setCancelable(true);
mProgressDialog.setTitle(getResources().getString(R.string.title));
mProgressDialog.setMessage(getResources().getString(R.string.message));
mProgressDialog.setProgressStyle(android.R.style.Theme_DeviceDefault_Light);
mProgressDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
mProgressDialog.setButton(DialogInterface.BUTTON_NEUTRAL, "OK", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
listner.onButtonClick();
}
});
return mProgressDialog;
}
}
还有我的ISubmitListner:
public interface ISubmitListner {
void onButtonClick();
}
【问题讨论】:
-
我不明白你在问什么,“我如何使用新的语言环境配置保留对话框”是什么意思?
-
用户通过按下导致对话框关闭的按钮来更改区域设置?对话框确实保留在那里,但是您想使用新的区域设置但它没有?您到底在哪里使用那个?
-
在您的对话框中,您的显示内容取决于本地?如果整个对话文本依赖于本地,则必须重新启动它。
-
@XaverKapeller 我想用对话框显示片段,即使在用户更改区域设置后,使用新语言。
-
@421 那么有什么问题呢?你不能给我们看一些相关的代码吗?如果我们不知道您在做什么,应该如何帮助您?
标签: android android-fragments android-dialogfragment