簡體   English   中英

OnClickListener僅激活一次

[英]OnClickListener only activates once

因此,我嘗試允許用戶在連接斷開時單擊“重新加載”按鈕,以嘗試重新創建活動並再次與Web視圖鏈接,以下代碼有效,但僅當使用首先嘗試,如果先單擊后失敗,然后再單擊一次,則不會重新創建活動。 有任何想法嗎?

package online.lhamaths.lornshillmathsonline;    
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private WebView webView;
    private ImageView imageView;
    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (isNetworkAvailable()) {
            button = findViewById(R.id.button);
            imageView = findViewById(R.id.imageview);
            webView = findViewById(R.id.webview);
            createWebView(webView);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(getApplicationContext(), "Restarting", Toast.LENGTH_SHORT).show();
                    finish();
                    startActivity(getIntent());
                }
            });
        } else {
            Toast.makeText(getApplicationContext(), "No Connection Present", Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void onBackPressed() {
        if (webView.canGoBack()) {
            webView.goBack();
        } else {
            super.onBackPressed();
        }
    }

    @SuppressLint("SetJavaScriptEnabled")
    public void createWebView(WebView webView) {
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl("https:lhamaths.online");
        Toast.makeText(getApplicationContext(), "Loading Site", Toast.LENGTH_SHORT).show();
        webView.setWebViewClient(new WebViewClient() {
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if (url.endsWith(".pdf")) {
                    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                    Toast.makeText(getApplicationContext(), "Opening File", Toast.LENGTH_SHORT).show();
                    return true;
                }
                return false;
            }

            public void onReceivedError(WebView webView, int errorCode, String description, String failingURL) {
                webView.destroy();
                button.setVisibility(View.VISIBLE);
                imageView.setVisibility(View.VISIBLE);
                Toast.makeText(getApplicationContext(), "No Connection Present, please reload the app", Toast.LENGTH_SHORT).show();
            }

            public void onPageFinished(WebView webView, String url) {
                imageView.setVisibility(View.INVISIBLE);
                button.setVisibility(View.INVISIBLE);
            }
        });
    }

    private boolean isNetworkAvailable() {
        ConnectivityManager connectivityManager
                = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        return activeNetworkInfo != null && activeNetworkInfo.isConnectedOrConnecting();
    }

}

這是因為你設置onClickListener里面isNetworkAvailable()條件。 因此,當您重新創建活動並且沒有Internet連接時,不會執行if條件。 因此,不會再次設置onClickListener 嘗試將setOnClickListener代碼置於if條件之外。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM