Web浏览器未显示任何内容

时间:2019-07-29 03:20:20

标签: android

任何人都可以看一下我的代码,让我知道我缺少什么?

MainActivity.java:

import React from 'react';
import { Badge } from 'native-base';
import {MaterialIcons as Icon} from '@expo/vector-icons';
import {
  View,
  Text,
  TextInput,
  Dimensions,
  TouchableOpacity,
  StyleSheet,
  Image,
  TouchableWithoutFeedback,
  FlatList
} from 'react-native';
import image from '../assets/Images/ShoeJackCityLogo.png';
import { ifIphoneX } from 'react-native-iphone-x-helper';
import Modal from 'react-native-modal';


    import { commonStyles } from './styles/styles';

    class ShopAttack extends React.Component {
      constructor(props) {
        super(props);
        this.state = {
          counter: 0,
          isModalVisible: false,
          show: true,
      }
[![}][1]][1]

      IncrementItem = () => {
        if(this.state.tempNum){
          this.setState({ counter: this.state.counter + this.state.tempNum, tempNum: null });
    }
      else{
        this.setState({ counter: this.state.counter + 1 });
      }
    }
      DecrementItem = () => {
        this.setState({ counter: this.state.counter - 1 });
      }
      ToggleClick = () => {
        this.setState({ show: !this.state.show });
      }

     handleOnTextChange = (text) => {
        const number = parseInt(text)
        if(number){
        this.setState({tempNumber: number})
        }
      }

      _toggleModal = () =>
      this.setState({ isModalVisible: !this.state.isModalVisible });


                    <View style={[commonStyles.row, commonStyles.alignSelfcenter]}>
                      <TouchableOpacity onPress={() => this.IncrementItem()}>
                        <View
                          style={[styles.counterButton]}
                        >
                        <Icon
                          type="MaterialIcons"
                          name="add"
                          size={40}
                          style={[
                            commonStyles.alignSelfcenter,
                            commonStyles.justifyCenter
                          ]}
                          />
                          <Text
                            style={[
                              commonStyles.inventrytextbutton,
                              commonStyles.white,
                              {}
                            ]}
                          >
                          </Text>
                        </View>
                      </TouchableOpacity>
                      <View
                        style={[
                          styles.inventrybar,
                          styles.alignSelfcenter,
                          styles.row,
                        ]}
                      >
                        <Icon
                          type="MaterialIcons"
                          name="monetization-on"
                          style={[
                            commonStyles.font16,
                            commonStyles.alignSelfcenter,
                            commonStyles.ml15,
                            {
                              color: '#C8A74D'
                            }
                          ]}
                        />
                        <TextInput
                          keyboardType = 'numeric'
                          onChange = {this.handleOnTextChange}
                          maxValue={99}
                          minValue={0}
                          style={[
                            commonStyles.inventrybartextbutton,
                            commonStyles.redText,
                            commonStyles.ml5
                          ]}
                          >
                        {this.state.counter}

                        </TextInput>
                      </View>
                      <TouchableOpacity onPress={() => this.DecrementItem()}>
                        <View
                          style={[styles.counterButton]}
                        >
                        <Icon
                          type="MaterialIcons"
                          name="remove"
                          size={40}
                          style={[
                            commonStyles.alignItems,
                            commonStyles.justifyCenter
                          ]}
                          />
                          <Text
                            style={[
                              commonStyles.inventrytextbutton,
                              commonStyles.white,
                              {}
                            ]}
                          >
                          </Text>
                        </View>
                      </TouchableOpacity>
                    </View>

activity_main.xml(布局文件):

public class MainActivity extends AppCompatActivity {
    private WebView mWebView;

    private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
            = new BottomNavigationView.OnNavigationItemSelectedListener() {

        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.navigation_home:
                    mWebView.loadUrl("https://yahoo.com");
                    return true;
                case R.id.navigation_dashboard:
                    mWebView.loadUrl("https://google.com");
                    return true;
                case R.id.navigation_notifications:
                    mWebView.loadUrl("https://apple.com");
                    return true;
            }
            return false;
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        BottomNavigationView navView = findViewById(R.id.nav_view);
        mWebView = (WebView) findViewById(R.id.webkit);
        navView.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        webSettings.setDomStorageEnabled(true);
        mWebView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                mWebView.loadUrl("https://google.com");
                return true;
            }
        });
    }

}

我的代码位于:Sample JDBC connection string

如果您认为这太含糊或太离题,请发表评论,我将其关闭。

4 个答案:

答案 0 :(得分:2)

替换

mWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            mWebView.loadUrl("https://google.com");
            return true;
        }
    });

使用

mWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {

            return false;
        }
    });
  

使宿主应用程序有机会在URL大约为   加载到当前的WebView中。如果不是WebViewClient   提供,默认情况下,WebView会要求活动管理器选择   URL的适当处理程序。如果提供了WebViewClient,则返回   true会导致当前WebView中止加载URL,而   返回false导致WebView继续按以下方式加载URL   通常。

答案 1 :(得分:1)

到目前为止,我还不能告诉您应该使用单独的类来扩展WebViewClient类:

   private class MyBrowser extends WebViewClient {
      @Override
      public boolean shouldOverrideUrlLoading(WebView view, String url) {
         view.loadUrl(url);
         return true;
      }
   }

,然后将其设置为WebViewClient:

mWebView.setWebViewClient(new MyBrowser());

还尝试添加用于自动加载图像的设置,启用javascript并设置滚动条:

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    switch (item.getItemId()) {
    mWebView.getSettings().setLoadsImagesAutomatically(true);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        case R.id.navigation_home:
            mWebView.loadUrl("https://yahoo.com");
            return true;
        case R.id.navigation_dashboard:
            mWebView.loadUrl("https://google.com");
            return true;
        case R.id.navigation_notifications:
            mWebView.loadUrl("https://apple.com");
            return true;
    }
    return false;
}

答案 2 :(得分:0)

如果您使用的是android 8+,则必须做两件事。

  1. 在清单应用程序标签中添加此android:usesCleartextTraffic="true"属性。 AndroidManifest.xml

  2. 您应该覆盖此方法。

        mWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
    
           view.load(request.getUrl().toString()) 
    
            return true;
        }
    });
    

答案 3 :(得分:0)

mWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            mWebView.loadUrl("https://facebook.com");
            return true;
        }
    });