Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在DialogFragment中显示来自internet的信息_Android_Android Dialogfragment_Dialogfragment - Fatal编程技术网

Android 在DialogFragment中显示来自internet的信息

Android 在DialogFragment中显示来自internet的信息,android,android-dialogfragment,dialogfragment,Android,Android Dialogfragment,Dialogfragment,我想在一个对话片段中显示来自互联网的信息,我有一些疑问,如下所示: 1-为此,我在DialogFragment中实现了一个AsynkTask,但我的活动同时运行另一个AsynkTask,因此DialogFragment需要等待完成活动中的AsynkTask。是否可以在活动之前从DialogFragment执行AsynkTask 2-我尝试在DialogFragment中使用一个DialogProgress,但它在活动中显示,如何在DialogFragment中使用 3-是否可以在DialogFr

我想在一个对话片段中显示来自互联网的信息,我有一些疑问,如下所示:

1-为此,我在DialogFragment中实现了一个AsynkTask,但我的活动同时运行另一个AsynkTask,因此DialogFragment需要等待完成活动中的AsynkTask。是否可以在活动之前从DialogFragment执行AsynkTask

2-我尝试在DialogFragment中使用一个DialogProgress,但它在活动中显示,如何在DialogFragment中使用

3-是否可以在DialogFragment中查阅internet上的信息而不执行异步任务

public class DialogFotoFragment extends DialogFragment {

private String latitude;
private String longitude;
private Handler hndl = new Handler();

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.dialog_foto_ponto, container);

    // Verifica se a latitude e lngitude foram informados
    if (latitude == null || latitude.trim().length() == 0) {
        Toast.makeText(this.getActivity(),
                "Não foi possível apresentar a foto", Toast.LENGTH_LONG)
                .show();
        this.dismiss();
    }

    if (longitude == null || longitude.trim().length() == 0) {
        Toast.makeText(this.getActivity(),
                "Não foi possível apresentar a foto", Toast.LENGTH_LONG)
                .show();
        this.dismiss();
    }

    ImageView img = (ImageView) view.findViewById(R.id.fotoPonto);
    Button btn = (Button) view.findViewById(R.id.btnOKDialogFoto);

    btn.setOnClickListener(buttonOk);

    ProgressDialog pDialog = ProgressDialog.show(getActivity(), "",
            "Wait...", true);

    // Apresenta tela de aguarde
    ConsultaFotoBackGround consultaFoto = new ConsultaFotoBackGround();
    Object[] objs = new Object[3];
    objs[0] = img;
    objs[1] = this;
    objs[2] = pDialog;
    consultaFoto.execute(objs);
    return view;
}

private OnClickListener buttonOk = new OnClickListener() {

    @Override
    public void onClick(View arg0) {
        DialogFotoFragment.this.dismiss();
    }
};

public String getLatitude() {
    return latitude;
}

public void setLatitude(String latitude) {
    this.latitude = latitude;
}

public String getLongitude() {
    return longitude;
}

public void setLongitude(String longitude) {
    this.longitude = longitude;
}

private class ConsultaFotoBackGround extends
        AsyncTask<Object, Void, Object[]> {

    private Handler hndl = new Handler();
    Drawable fotoInternet;
    ImageView img;
    ProgressDialog pDialog;

    @Override
    protected Object[] doInBackground(Object... objs) {
        img = (ImageView) objs[0];
        DialogFotoFragment classe = (DialogFotoFragment) objs[1];
        pDialog = (ProgressDialog)objs[2];

        try {
            fotoInternet = Utilities.LoadImagePonto(latitude,
                    longitude);
            showFoto();
        } catch (Exception e) {
            Toast.makeText(classe.getActivity(),
                    "Não foi possível apresentar a foto", Toast.LENGTH_LONG)
                    .show();
            classe.dismiss();
        }
        return objs;
    }

    @Override
    protected void onPostExecute(Object[] result) {
    }

    protected void showFoto() {
        hndl.post(new Runnable() {
            @Override
            public void run() {
                img.setImageDrawable(fotoInternet);
                pDialog.dismiss();
            }
        });
    }
}

}
public类DialogFotoFragment扩展了DialogFragment{
私有字符串纬度;
私有字符串经度;
私有处理程序hndl=新处理程序();
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.dialog\u foto\u ponto,容器);
//验证信息的纬度和数量
如果(纬度==null | |纬度.trim().length()==0){
Toast.makeText(this.getActivity(),
“不必担心”,吐司,长度(长)
.show();
这个。解散();
}
如果(经度==null | |经度.trim().length()==0){
Toast.makeText(this.getActivity(),
“不必担心”,吐司,长度(长)
.show();
这个。解散();
}
ImageView img=(ImageView)view.findViewById(R.id.fotoPonto);
按钮btn=(按钮)视图.findViewById(R.id.btnOKDialogFoto);
btn.setOnClickListener(按钮OK);
ProgressDialog pDialog=ProgressDialog.show(getActivity(),“”,
“等等……”,没错);
//阿格雷森塔酒店
ConsultaFotoBackGround consultaFoto=新ConsultaFotoBackGround();
Object[]objs=新对象[3];
objs[0]=img;
objs[1]=这个;
objs[2]=pDialog;
consultaFoto.execute(objs);
返回视图;
}
private OnClickListener buttonOk=new OnClickListener(){
@凌驾
公共void onClick(视图arg0){
DialogFotoFragment.this.discouse();
}
};
公共字符串getLatitude(){
返回纬度;
}
公共void设置纬度(字符串纬度){
这个。纬度=纬度;
}
公共字符串getLongitude(){
返回经度;
}
公共无效设置经度(字符串经度){
这个经度=经度;
}
私人类顾问FotoBackground扩展
异步任务{
私有处理程序hndl=新处理程序();
可牵引fotoInternet;
图像视图img;
ProgressDialog;
@凌驾
受保护对象[]doInBackground(对象…objs){
img=(ImageView)objs[0];
DialogFotoFragment类=(DialogFotoFragment)objs[1];
pDialog=(ProgressDialog)objs[2];
试一试{
fotoInternet=Utilities.LoadImagePonto(纬度,
经度);
showFoto();
}捕获(例外e){
Toast.makeText(classe.getActivity(),
“不必担心”,吐司,长度(长)
.show();
分类:解雇;
}
返回对象;
}
@凌驾
受保护的void onPostExecute(对象[]结果){
}
受保护的void showFoto(){
hndl.post(新的可运行(){
@凌驾
公开募捐{
img.setImageDrawable(fotoInternet);
pDialog.disclose();
}
});
}
}
}

您不能使用
AsyncTask
获取所需信息,然后在其
onPostExecute
中,您可以使用刚刚获得的数据创建一个
对话框片段


按照官方文档了解如何正确创建对话框(即使使用自定义布局):

您不能使用
AsyncTask
获取所需信息,然后在其
onPostExecute
中,您可以使用刚获得的数据创建一个
对话框片段

按照官方文档了解如何正确创建对话框(即使使用自定义布局):