[英]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.