検索

ホームページ  >  に質問  >  本文

android - 请求网络的时候出现自定义的对话框

public static Dialog createLoadingDialog(Context context){
        LayoutInflater inflater = LayoutInflater.from(context);
        View v = inflater.inflate(R.layout.loading_dialog, null);// 得到加载view
        LinearLayout layout = (LinearLayout) v.findViewById(R.id.dialog_view);// 加载布局
        // main.xml中的ImageView
        ImageView spaceshipImage = (ImageView) v.findViewById(R.id.imgLoading);

        SceneAnimation s = new SceneAnimation(spaceshipImage,imglist,1);

//        Glide.with(context).load(R.drawable.et_loader).asGif().diskCacheStrategy(DiskCacheStrategy.SOURCE).into(spaceshipImage);

        Dialog loadingDialog = new Dialog(context,R.style.loadingDialogStyle);// 创建自定义样式dialog

        loadingDialog.setCancelable(true);// 不可以用“返回键”取消
        loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.FILL_PARENT,
                LinearLayout.LayoutParams.FILL_PARENT));// 设置布局
        return loadingDialog;
    }

这是我对话框的代码;

@Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        dialog.dismiss();
    }
    
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        dialog = LoadingDialog.createLoadingDialog(activity);
        dialog.show();
    }
大家讲道理大家讲道理2773日前556

全員に返信(3)返信します

  • PHPz

    PHPz2017-04-17 17:59:17

    子スレッドで UI を呼び出さないでください

    リーリー

    次のようにしてみてください

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-17 17:59:17

    このような効果を実現したいのですが、API をリクエストするときにローディング効果を作成します。 ローディングボックスが表示されなくなりました。

    これは私のリクエスト API クラス (NetworkTask) で、AsyncTask を継承し、すべてのリクエストをここにカプセル化します。

    これは NetworkTask を呼び出すためのコードです。 コンストラクターによって渡される値は、呼び出されるAPI名と現在のアクティビティ(Activity)です。

    onPostExecute と onPreExecute は両方とも呼び出され、ダイアログにも値があります。

    子スレッドは ui を呼び出すことができないと聞きましたが? この問題のせいでしょうか?ではダイアログを呼び出すことができないのでしょうか?

    以下はダイアログ ボックスのレイアウトとダイアログ ボックスの Java コードです

    リーリー

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-17 17:59:17

    onProgressUpdate にはオーバーライドされたメソッドがあり、ダイアログ ボックスはその中に記述されています

    返事
    0
  • キャンセル返事