我使用一个扩展DialogFragment的类,在这个类中,我使用一个AsyncTask来加载我的AlertDialog的内容。
我的问题是:如何创建一个AlertDialog,其中显示:“加载.”然后在我的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
}
}发布于 2015-09-16 13:59:05
为此,我建议不要使用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);
}
}}
https://stackoverflow.com/questions/32610541
复制相似问题