Пользовательский диалог для предупреждения веб-страницы не загружен - PullRequest
0 голосов
/ 22 сентября 2011

Я хочу предупредить людей, если страница не загружается и функция Toast не остается в течение достаточно длительного периода времени (но я оставил код и закомментировал его на случай, если захочу вернуться к нему ). Поэтому сейчас я пытаюсь создать собственный диалог, но он не появляется.

Я в основном открываю веб-страницу, которая работает Я добавил загрузчик в строке состояния, чтобы люди увидели, что страница загружается, и это работает Я добавил код, чтобы сохранить навигацию в приложении, чтобы люди не выходили в новый браузер, и это работает Как я уже сказал, тост технически работает, но не ложится спать так долго, как хотелось бы Затем я добавил диалоговое окно настраиваемых предупреждений, и там я терплю неудачу

Я также создал отдельный файл XML для настраиваемого оповещения

И тогда я еще даже не зашел так далеко, но нужно ли мне добавлять код, чтобы закрыть его, или просто нажать кнопку «Назад», чтобы автоматически закрыть его?

Спасибо!

Вот мой код в .java файле

    public class FC extends Activity {

    WebView mWebView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

        //this one line added for progress support
        this.getWindow().requestFeature(Window.FEATURE_PROGRESS);

        setContentView(R.layout.web);

        //makes progress bar visible
        getWindow().setFeatureInt( Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON);

        //get web view
        mWebView = (WebView) findViewById( R.id.webWeb );
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.getSettings().setSupportZoom(true);
        mWebView.getSettings().setBuiltInZoomControls(true);
        mWebView.setInitialScale(45);
        mWebView.loadUrl("http://www.chipmunkmobile.com");

        //sets the Chrome client
        final Activity MyActivity = this;
        mWebView.setWebChromeClient(new WebChromeClient()
        {
            public void onProgressChanged(WebView view, int progress)
            {
                //makes the bar disappear after URL is loaded, and changes string to Loading...
                MyActivity.setTitle("Loading...");
                MyActivity.setProgress(progress * 100);

                //return the app name after finish loading
                if(progress == 100)
                    MyActivity.setTitle(R.string.app_name);
            }

        });

        //makes page stay in same web client
        mWebView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return false;
            }
        });


        //looks to see if connects
        mWebView.setWebViewClient(new WebViewClient() {
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                //Toast.makeText(getApplicationContext(), "NO CONNECTION?\nVisit the Cyberspots in the SW and NW Halls to find out how to get on the free WiFi", 
                    //Toast.LENGTH_LONG).show();

                //showDialog(0);

                AlertDialog.Builder builder;
                AlertDialog alertDialog;

                Context mContext = getApplicationContext();
                LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
                View layout = inflater.inflate(R.layout.custom_dialog,
                        (ViewGroup) findViewById(R.id.layout_root));

                TextView text = (TextView) layout.findViewById(R.id.text);
                text.setText("WHATEVER");
                ImageView image = (ImageView) layout.findViewById(R.id.imgid);
                image.setImageResource(R.drawable.img);

                builder = new AlertDialog.Builder(mContext);
                builder.setView(layout);
                alertDialog = builder.create();


            }
        });
    }

Вот мой код в .xml файле

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:id="@+id/layout_root"
  android:padding="10dp">
    <ImageView android:id="@+id/imgid"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_marginRight="10dp" 
        />
    <TextView android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:textColor="#FFF"
        />

</LinearLayout>

Ответы [ 2 ]

0 голосов
/ 02 мая 2012

Вместо использования оповещения я просто использовал встроенное сообщение об ошибке HTML ... Я не нашел решения проблемы alertDialog

0 голосов
/ 22 сентября 2011

Добавьте alertDialog.show() в конец метода, чтобы отобразить диалоговое окно.

Кроме того, вы можете добавить setNeutralButton("ok", new DialogInterface.OnClickListener() {...} и вызвать finish, чтобы закрыть диалоговое окно в OnClickListener.

...