Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.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
Java 无法解析充气机和容器_Java_Android_Android Fragments_Webview_Android Studio - Fatal编程技术网

Java 无法解析充气机和容器

Java 无法解析充气机和容器,java,android,android-fragments,webview,android-studio,Java,Android,Android Fragments,Webview,Android Studio,为什么在我的活动中“充气机和容器”没有得到解决?我应该怎么写 import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.webkit.WebChrom

为什么在我的活动中“充气机和容器”没有得到解决?我应该怎么写

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

public class GamesFragment extends Fragment {

private ProgressBar progress;
private WebView myWebView;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    myUIUpdate();
    return null;
}

private void myUIUpdate() {
    View rootView = inflater.inflate(R.layout.fragment_games, container, false);


    String url = "http://gsmarena.com";
    myWebView = (WebView) rootView.findViewById(R.id.webViewGames);
    myWebView.setWebChromeClient(new myWebViewClient());
    myWebView.getSettings().setJavaScriptEnabled(true);
    progress = (ProgressBar) rootView.findViewById(R.id.progressBar);
    myWebView.loadUrl(url);
    progress.setMax(100);


    myWebView.setWebViewClient(new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView View, String url) {
            View.loadUrl(url);
            GamesFragment.this.progress.setProgress(0);
            return true;
        }

    });


    myWebView.setOnKeyListener(new android.view.View.OnKeyListener()

    {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN) {
                WebView webView = (WebView) v;

                switch (keyCode) {
                    case KeyEvent.KEYCODE_BACK:
                        if (webView.canGoBack()) {
                            webView.goBack();
                            return true;
                        }
                        break;
                }
            }

            return false;
        }
    });
    return rootView;

}


private class myWebViewClient extends WebChromeClient {
    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        GamesFragment.this.setValue(newProgress);
        super.onProgressChanged(view, newProgress);
    }
}

@Override
public void setUserVisibleHint(boolean visible) {
    super.setUserVisibleHint(visible);
    if (visible && isResumed()) {
        myUIUpdate();
    }
}

public void setValue(int progress) {
    this.progress.setProgress(progress);
}


}
我正在尝试附加myUIUdate,因为要在屏幕上看不到我的片段时隐藏它,请使用以下命令:

@Override
public void setUserVisibleHint(boolean visible) {
    super.setUserVisibleHint(visible);
    if (visible && isResumed()) {
        myUIUpdate();
    }
    }
PS:如果有人有更好的办法隐藏片段,我喜欢听。

更改:

   private void myUIUpdate()

并将充气机和容器传递给它:

   myUIUpdate(inflater, container);

因为在
myUIUpdate()
方法中未找到
充气机和
容器;作为

并将(同时更改返回类型)更改为

编辑 在方法中写入
myUIUpdate
,并作为从中删除

并将
myUIUpdate
方法重写为

private void myUIUpdate(View view) {
    String url = "http://gsmarena.com";
    myWebView = (WebView) view.findViewById(R.id.webViewGames);
    myWebView.setWebChromeClient(new myWebViewClient());
    myWebView.getSettings().setJavaScriptEnabled(true);
    progress = (ProgressBar) view.findViewById(R.id.progressBar);
    myWebView.loadUrl(url);
    progress.setMax(100);

    myWebView.setWebViewClient(new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView View, String url) {
            View.loadUrl(url);
            GamesFragment.this.progress.setProgress(0);
            return true;
        }

    });

    myWebView.setOnKeyListener(new android.view.View.OnKeyListener() {@Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN) {
                WebView webView = (WebView) v;

                switch (keyCode) {
                    case KeyEvent.KEYCODE_BACK:
                        if (webView.canGoBack()) {
                            webView.goBack();
                            return true;
                        }
                        break;
                }
            }
            return false;
        }
    });
}

LayoutFlater充气机、ViewGroup容器、Bundle savedInstanceState这些都是您使用的块的本地设置

无需创建自定义方法来初始化片段中布局中的所有视图,请尝试覆盖onViewCreated并将所有myUIUpdate()代码移到onViewCreated

    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.info_fragment, container, false);
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        myWebView = (WebView) view.findViewById(R.id.webViewGames);
        myWebView.setWebChromeClient(new myWebViewClient());
        myWebView.getSettings().setJavaScriptEnabled(true);
        progress = (ProgressBar) view.findViewById(R.id.progressBar);
        myWebView.loadUrl(url);
        progress.setMax(100);


        myWebView.setWebViewClient(new WebViewClient() {

            @Override
            public boolean shouldOverrideUrlLoading(WebView View, String url) {
                View.loadUrl(url);
                GamesFragment.this.progress.setProgress(0);
                return true;
            }

        });


        myWebView.setOnKeyListener(new android.view.View.OnKeyListener()

        {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (event.getAction() == KeyEvent.ACTION_DOWN) {
                    WebView webView = (WebView) v;

                    switch (keyCode) {
                        case KeyEvent.KEYCODE_BACK:
                            if (webView.canGoBack()) {
                                webView.goBack();
                                return true;
                            }
                            break;
                    }
                }

                return false;
            }
        });
    }

您将获得
充气机
容器

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    myUIUpdate();
    return null;
}

他们是当地人。您必须将它们作为参数传递给
myUIUpdate
,或者在
活动中声明字段
,并在
onCreateView
中分配它们(这是一个难看的解决方案)。

您能指出显示错误的确切行吗?顺便说一句,我看到充气器和容器不是实例变量。你在哪里初始化它们?在应用它之后。myUIUpdate();在Override public void中,setUserVisibleHint(布尔可见){super.setUserVisibleHint(可见);if(可见和&isResumed()){myUIUpdate();}给我一个错误“游戏片段中的myUIUpdate(LayoutFlater,ViewGroup)无法应用于()添加代码后,应用程序崩溃请查看日志E/AndroidRuntime(30911):java.lang.NullPointerException:在添加您编辑的代码myUpdate()后,再次尝试在空对象引用上调用虚拟方法“android.view.view android.view.view.findViewById(int)”无法应用游戏中的视图片段错误以布尔形式出现isResumed=false;@Override public void setUserVisibleHint(布尔isVisibleToUser){super.setUserVisibleHint(isVisibleToUser);{if(isVisibleToUser&&isResumed()){myUIUpdate();isResumed=true;}
private View myUIUpdate(LayoutInflater inflater, ViewGroup container) {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_games, container, false);
    return rootView;
}


@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    myUIUpdate(view);
}
private void myUIUpdate(View view) {
    String url = "http://gsmarena.com";
    myWebView = (WebView) view.findViewById(R.id.webViewGames);
    myWebView.setWebChromeClient(new myWebViewClient());
    myWebView.getSettings().setJavaScriptEnabled(true);
    progress = (ProgressBar) view.findViewById(R.id.progressBar);
    myWebView.loadUrl(url);
    progress.setMax(100);

    myWebView.setWebViewClient(new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView View, String url) {
            View.loadUrl(url);
            GamesFragment.this.progress.setProgress(0);
            return true;
        }

    });

    myWebView.setOnKeyListener(new android.view.View.OnKeyListener() {@Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN) {
                WebView webView = (WebView) v;

                switch (keyCode) {
                    case KeyEvent.KEYCODE_BACK:
                        if (webView.canGoBack()) {
                            webView.goBack();
                            return true;
                        }
                        break;
                }
            }
            return false;
        }
    });
}
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.info_fragment, container, false);
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        myWebView = (WebView) view.findViewById(R.id.webViewGames);
        myWebView.setWebChromeClient(new myWebViewClient());
        myWebView.getSettings().setJavaScriptEnabled(true);
        progress = (ProgressBar) view.findViewById(R.id.progressBar);
        myWebView.loadUrl(url);
        progress.setMax(100);


        myWebView.setWebViewClient(new WebViewClient() {

            @Override
            public boolean shouldOverrideUrlLoading(WebView View, String url) {
                View.loadUrl(url);
                GamesFragment.this.progress.setProgress(0);
                return true;
            }

        });


        myWebView.setOnKeyListener(new android.view.View.OnKeyListener()

        {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (event.getAction() == KeyEvent.ACTION_DOWN) {
                    WebView webView = (WebView) v;

                    switch (keyCode) {
                        case KeyEvent.KEYCODE_BACK:
                            if (webView.canGoBack()) {
                                webView.goBack();
                                return true;
                            }
                            break;
                    }
                }

                return false;
            }
        });
    }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    myUIUpdate();
    return null;
}