Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.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 无法同时显示进度条和文本视图_Android_Android Studio_Textview_Progress Bar_Android Webview - Fatal编程技术网

Android 无法同时显示进度条和文本视图

Android 无法同时显示进度条和文本视图,android,android-studio,textview,progress-bar,android-webview,Android,Android Studio,Textview,Progress Bar,Android Webview,大家好,我试图一次显示进度条和文本视图,但文本视图只显示一次,然后消失。下面是我的Java文件: public class MainActivity extends Activity { public boolean show_splash; ProgressBar progressBar; @Override public void onCreate(Bundle savedInstanceState) { show_splash = tr

大家好,我试图一次显示进度条和文本视图,但文本视图只显示一次,然后消失。下面是我的Java文件:

 public class MainActivity extends Activity {

    public boolean show_splash;
    ProgressBar progressBar;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        show_splash = true;
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView myWebView = (WebView) findViewById(R.id.webview);
        progressBar = (ProgressBar) findViewById(R.id.progressBar);

        //enable Javascript
        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        webSettings.setAllowContentAccess(true);
        webSettings.setAppCacheEnabled(true);
        webSettings.setBuiltInZoomControls(true);
        webSettings.setDomStorageEnabled(true);
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        webSettings.setSupportMultipleWindows(true);
        webSettings.setSupportZoom(true);
        webSettings.setLoadsImagesAutomatically(true);

        //loads the WebView completely zoomed out
        webSettings.setLoadWithOverviewMode(true);

        webSettings.setUseWideViewPort(true);

        myWebView.setWebViewClient(new MyWebViewClient());    

        myWebView.setDownloadListener(new DownloadListener() {
            public void onDownloadStart(String url, String userAgent,
                                        String contentDisposition, String mimetype,
                                        long contentLength) {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse(url));
                startActivity(intent);

            }
        });

        //load the home page URL
        myWebView.loadUrl("http://mvc.myorange.ca/");
    }

    public void Visible(){
        WebView webview = (WebView) findViewById(R.id.webview);
        //ImageView logo = (ImageView) findViewById(R.id.imageView1);
        TextView Text =(TextView) findViewById(R.id.textView1);
        if (show_splash){
            webview.setVisibility(View.INVISIBLE);
            //logo.setVisibility(View.VISIBLE);
            Text.setVisibility(View.VISIBLE);
            progressBar.setVisibility(View.VISIBLE);
            show_splash=false;
        }
        else {
            webview.setVisibility(View.VISIBLE);
            progressBar.setVisibility(View.VISIBLE);
            Text.setVisibility(View.INVISIBLE);
            //logo.setVisibility(View.INVISIBLE);
        }
    }

    public void Invisible(){
        WebView webview = (WebView) findViewById(R.id.webview);
        //ImageView logo = (ImageView) findViewById(R.id.imageView1);
        webview.setVisibility(View.VISIBLE);
        //logo.setVisibility(View.INVISIBLE);
        progressBar.setVisibility(View.GONE);
    }

    public class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (Uri.parse(url).getHost().equals("mvc.myorange.ca")) {
                return false;
            }
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(intent);
            return true;
        }

        @Override
        public void onPageStarted(WebView view, String url,  Bitmap facIcon) {
            Visible();
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            Invisible();
        }
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        WebView myWebView = (WebView) findViewById(R.id.webview);
        if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
            myWebView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}
下面是我的活动xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:paddingTop="0dp"
android:paddingBottom="0dp"
android:gravity="center"
tools:context=".MainActivity">

<WebView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="0dp"
    android:paddingBottom="0dp"/>

<ProgressBar
   android:layout_height="wrap_content"
   android:layout_width="wrap_content"
   android:layout_gravity="center"
   android:id="@+id/progressBar"
    android:layout_marginBottom="30dp"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true" />

<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/text"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#FFFFFF"
    android:textSize="65dp"
    android:background="#0582FF"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:gravity="center_vertical|center_horizontal" />

</RelativeLayout>

现在的问题是文本视图只出现一次,然后就消失了。我想它是显示第一次随着进度栏后面的文本视图。有人能指出我错在哪里吗?如果你想用对话框加载文本,请使用ProgressBar而不是ProgressBar。。尝试删除此行 Text.setVisibilityView.INVISIBLE;
然后告诉我textview是保留在那里还是消失了

一些注释,以获得更好的代码

-变量的名称应为小写。文本查看文本

-findViewById是一个昂贵的调用,您应该在onCreate方法中执行此操作,并将所有视图保存为变量以保存调用,就像您对ProgressBar所做的那样,但对所有调用都是如此

只有几个好的实践

我发现了错误,问题是你把文本视图从上到下,从开始到结束,然后它只显示自己。删除那些声明

将布局更改为此布局并查看差异:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="0dp"
    android:paddingBottom="0dp"
    android:gravity="center"
    tools:context=".MainActivity">

    <TextView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Texto cualquiera"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:textColor="#FFFFFF"
        android:textSize="65dp"
        android:background="#0582FF"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentRight="true"
        android:gravity="center_vertical|center_horizontal" />


    <ProgressBar
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_gravity="center"
        android:id="@+id/progressBar"
        android:layout_marginBottom="30dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true" />

    <WebView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/webview"
        android:layout_below="@+id/progressBar"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:paddingLeft="0dp"
        android:paddingRight="0dp"
        android:paddingTop="0dp"
        android:paddingBottom="0dp"/>

</RelativeLayout>

我只想在页面第一次开始加载时显示文本,如果我删除了不可见的行,那么无论何时下载页面,文本视图都将进入图片中,从逻辑上讲,公共无效的onPageFinishedWebView视图,字符串url{INVISIBLE;}在你的瘟疫真的上膛之前被呼叫。这就使得文本视图瞬间消失了做一件事。。只是想试试。。试着把它放在看得见的地方;方法,而不是onPageStarted;这不是一个选项,因为文本视图在整个WebView中都保留着。我做了所有关于良好实践的更改。谢谢你。但当我做了这些更改后,textview仍然消失了,主URL也重定向到了其他URL,用于在站点内登录。因此,使文本视图消失可能是一个问题。