繁体   English   中英

Android-启动活动时不显示“加载”对话框,而仅在某些活动中

[英]Android - Loading Dialog not appearing when an activity is launched, but only from certain activities

我正在开发一个对所有webView使用相同活动的应用程序,因为唯一需要更改的就是它正在加载的url。 我有一个加载对话框弹出窗口,因为否则它只是白页。 问题是,除了从主活动启动网页活动外,加载对话框适用于每个实例。 这是主要活动中的启动代码。 不同的按钮可以改变意图。

编辑 :按不起作用,我的意思是它加载了网页,但没有弹出对话框,它只是坐在白屏上,好像我根本不应该OverrideUrlLoading。 它甚至不打印我放在其中的调试信息。 它肯定使用的是我的新webClient,因为它不具有默认客户端的任何功能。 因此,基本上,不应该调用shouldOverrideUrlLoading(但是onPageFinished是)

编辑2 :我忘了,logcat也从标签webViewGlue输出nativeDestroy View

    Intent i = null;
    // check which button was pressed, and then create the new intent
    if (v == btnParticipants) {
        i = new Intent(this, DetailedList.class);
        i.putExtra("choice", Constants.SPONSOR_PAGE);
    } else if (v == btnDirectionMap) {
        i = new Intent(this, DirectionMapActivity.class);
    } else if (v == btnEventMap) {
        i = new Intent(this, EventMapActivity.class);
    } else if (v == btnSchedule) {
        i = new Intent(this, DetailedList.class);
        i.putExtra("choice", Constants.ATTRACTION_PAGE);
    } else if (v == btnSavedSchedule) {
        i = new Intent(this, DetailedList.class);
        i.putExtra("choice", Constants.MY_ATTRACTIONS);
    } else if (v == btnRegistration) {
        i = new Intent(this, Webpage.class);
        i.putExtra("url", RetrievalEngine.getInstance().mainEvent.eventWebsite);
    } else if (v == btnQR) {

    } else if (v == btnFacebook) {

    } else if (v == btnTwitter) {
        i = new Intent(this, TwitterActivity.class);
    } else if (v == btnWebsite) {

    } else if (v == btnAbout) {
        i = new Intent(this, AboutScreen.class);
    }

    // if a new intent was created, start it
    if (i != null) {
        startActivity(i);
    }

该代码不起作用,但是该代码起作用,它来自一个关于页面,其中v是一个视图(在这种情况下为按钮):

    if (v == btnWebsite){
        Intent i = new Intent(this, Webpage.class);
        i.putExtra("url", url);
        startActivity(i);
    }

两者都在做完全相同的事情,所以我不知道为什么它不起作用。

另外,这是网页活动:

WebView webView;
static ProgressDialog mProgressDialog;

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    this.finish();
    return super.onKeyUp(keyCode, event);
}

public void onFinish(){
    webView.destroy();
}

@SuppressLint("SetJavaScriptEnabled")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.web);
    mProgressDialog = new ProgressDialog(this);
    webView = (WebView) findViewById(R.id.webView);
    Button backBtn = (Button) findViewById(R.id.backButton);
    final TextView lbl = (TextView)findViewById(R.id.webPageDesc);
    lbl.setText("Loading...");
    backBtn.setText("Back");
    backBtn.setOnClickListener(new OnClickListener(){

        public void onClick(View viewArg) {
            WebView view = (WebView) findViewById(R.id.webView);
            if (view.canGoBack()) {
                view.goBack();
            }
        }
    });

    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            lbl.setText("Loading...");

            mProgressDialog.setTitle("Loading");
            try{
                mProgressDialog.show();
            }catch(Exception e){}
            mProgressDialog.setMessage("Loading " + url);
            return false;
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            mProgressDialog.dismiss();
            if(view.getTitle().length() > 33){
                lbl.setText(view.getTitle().substring(0, 30) + "...");
            }else{
                lbl.setText(view.getTitle());
            }
            view.setVisibility(View.VISIBLE);
            super.onPageFinished(view, url);
        }
    });

    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        String url = extras.getString("url");
        webView.loadUrl(url);
    }
}

我将代码从shouldOverrideUrlLoading移到了onPageStarted,并且它可以正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM