Android 对话框片段
Android DialogFragment
我使用扩展 DialogFragment 的 class,在此 class 中,我使用 AsyncTask
加载我的 AlertDialog
.
的内容
我的问题是:如何创建一个 AlertDialog
来显示:"Loading..." 然后在我的 onPostExecute
方法中显示内容?
public class MyDialog extends DialogFragment {
public MyDialog(){
super();
}
@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
....
return builder.create();
}
public class myTask extends Asynctask<Void, Void, Void> {
@Override
protected Void onPreExecute(){
Show loading... in AlertDialog
}
@Override
protected Void doInBackground(Void... voids) {
Load content...
}
@Override
protected Void onPostExecute(){
Show content in AlertDialog
}
}
为此,我的建议是不要使用 AlertDialog。使用进度对话框,这是您的完整对话框,
public class MyDialog extends DialogFragment {
public MyDialog(){
super();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.your_dialog_id, container, false);
new myTask().execute();
return view;
}
private void afterContentLoad (Object content)
{
//Update your UI with respect of your content :)
}
public class myTask extends Asynctask<Void, Void, Void> {
private ProgressDialog mDialog;
@Override
protected Void onPreExecute(){
try{
mDialog = ProgressDialog.show(getActivity(), "", "Loading...!");
}
catch(Exception e)
{
//BadTokenException
e.printStackTrace();
}
}
@Override
protected Void doInBackground(Void... voids) {
Load content...
}
@Override
protected Void onPostExecute(){
if (mDialog != null && mDialog.isShowing()){
mDialog.dismiss();
}
//Put your code after content loaded
afterContentLoad(Object);
}
}
}
我使用扩展 DialogFragment 的 class,在此 class 中,我使用 AsyncTask
加载我的 AlertDialog
.
的内容
我的问题是:如何创建一个 AlertDialog
来显示:"Loading..." 然后在我的 onPostExecute
方法中显示内容?
public class MyDialog extends DialogFragment {
public MyDialog(){
super();
}
@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
....
return builder.create();
}
public class myTask extends Asynctask<Void, Void, Void> {
@Override
protected Void onPreExecute(){
Show loading... in AlertDialog
}
@Override
protected Void doInBackground(Void... voids) {
Load content...
}
@Override
protected Void onPostExecute(){
Show content in AlertDialog
}
}
为此,我的建议是不要使用 AlertDialog。使用进度对话框,这是您的完整对话框,
public class MyDialog extends DialogFragment {
public MyDialog(){
super();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.your_dialog_id, container, false);
new myTask().execute();
return view;
}
private void afterContentLoad (Object content)
{
//Update your UI with respect of your content :)
}
public class myTask extends Asynctask<Void, Void, Void> {
private ProgressDialog mDialog;
@Override
protected Void onPreExecute(){
try{
mDialog = ProgressDialog.show(getActivity(), "", "Loading...!");
}
catch(Exception e)
{
//BadTokenException
e.printStackTrace();
}
}
@Override
protected Void doInBackground(Void... voids) {
Load content...
}
@Override
protected Void onPostExecute(){
if (mDialog != null && mDialog.isShowing()){
mDialog.dismiss();
}
//Put your code after content loaded
afterContentLoad(Object);
}
}
}