【问题标题】:View in fragments cannot be applied to ()片段中的视图不能应用于 ()
【发布时间】:2015-06-26 01:16:40
【问题描述】:

当片段不在屏幕上时,我试图隐藏片段,所以我使用setUserVisibleHint 隐藏片段,但出现错误

“GamesFragment 中的myUIUpdate(View) 不能应用于()”

我该如何解决?

这是我的活动:

  import android.os.Bundle;
  import android.support.annotation.Nullable;
  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) {


    View rootView = inflater.inflate(R.layout.fragment_games, null);
    return rootView;

}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    myUIUpdate(view);
}





void myUIUpdate(View view) {

    String url = "http://gsmarena.com";
    myWebView = (WebView)this.getView().findViewById(R.id.webViewGames);
    myWebView.setWebChromeClient(new myWebViewClient());
    myWebView.getSettings().setJavaScriptEnabled(true);
    progress = (ProgressBar) this.getView().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;
        }
    });

}


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

boolean isResumed = false;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser); {
            if (isVisibleToUser && isResumed()) {
                myUIUpdate();
                isResumed = true;
    }


    }}




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


}

准确地说,错误出现在这一行:

 boolean isResumed = false;
 @Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser); {
            if (isVisibleToUser && isResumed()) {
              // here is the error.
                myUIUpdate();
                isResumed = true;
    }


    }}

我尝试过改变

 myUIUpdate();

到

 myUIUpdate(View);

当我尝试这样做时,它会显示“预期的表达式”。

【问题讨论】:

    标签: java android eclipse android-fragments android-studio


    【解决方案1】:

    如果您想访问 Fragment 的视图,您可以使用 Fragment.getView() 并将其传递给您的 myUiUpdate

    【讨论】:

    • 你能给我举个例子吗?
    • 在您的 setUserVisibleHint 中尝试 myUpdate(getView())
    猜你喜欢
    • 2021-10-31
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    相关资源
    最近更新 更多