【问题标题】:Android - Using FragmentsAndroid - 使用片段
【发布时间】:2013-08-23 14:50:19
【问题描述】:

我对 Java 和 Android 开发非常陌生。我希望能够使用片段在我的应用程序中显示本地页面页面(因为我不希望整个应用程序都基于网络)。

所以,我进入了我的 arview.xml 并添加了一个片段:

<fragment
        android:id="@+id/fragment_bbc"
        android:name="android.webkit.WebViewFragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true" />

现在,我想在其中放置一个网页(目前,我将使用 bbc 网站)。

在我的“onCreate(Bundle savedInstanceState)”中,我有这个:

webFrag = (WebViewFragment) mGUIView.findViewById(R.id.fragment_bbc);
mWebView = (WebView) mGUIView.findViewById(R.id.fragment_bbc);
myWebView.loadUrl("http://www.bbc.co.uk");

我有所有这 3 行的错误,都说它们无法解决。

我哪里错了?谢谢

【问题讨论】:

  • 一般在fragment中在onCreateView方法中使用findviewbyid(),然后在onviewCreated()中做一些处理。
  • 这是什么MGUIView?如果它是您的 mainActivity,则您不需要当前视图的引用。
  • MGUIView = (RelativeLayout) getLayoutInflater().inflate(R.layout.arview, null);

标签: android webview fragment


【解决方案1】:

你不应该在 xml 中使用“标记”片段,只需做一个经典布局并在扩展片段的类中使用它

例子:

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle saved) {
        _view = inflater.inflate(R.layout.fragment_accueil, group, false);
        // get views
        _textViewTitle = (TextView) _view.findViewById(R.id.title_home);
        _buttonLocalSearch = (Button) _view.findViewById(R.id.btn_local_search);
        return _view;
    }


    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
    {
          _textViewTitle.setText(getActivity().getString(R.string.tle_home));
          _buttonLocalSearch.setOnClickListener(this);
    }

【讨论】:

    【解决方案2】:

    在 Java 中,您需要初始化要使用的组件并自行选择变量类型。在你的情况下尝试改变

    webFrag = (WebViewFragment) mGUIView.findViewById(R.id.fragment_bbc);
    mWebView = (WebView) mGUIView.findViewById(R.id.fragment_bbc);
    

    WebViewFragment webFrag = (WebViewFragment) mGUIView.findViewById(R.id.fragment_bbc);
    WebView mWebView = (WebView) mGUIView.findViewById(R.id.fragment_bbc);
    

    或者你完全不同,尝试这样的事情:

    WebView wv =  new WebView();
    wv.findViewById();
    

    【讨论】:

    • 谢谢,当我这样做时,我收到以下错误: - WebViewFragment 无法解析为类型 - fragment_bbc 无法解析或不是字段
    • 我必须创建一个新的 Java 类吗?谢谢
    【解决方案3】:

    您之前是否实例化了这些变量?

    试试:

    WebViewFragment webFrag = (WebViewFragment) findViewById(R.id.fragment_bbc);
    WebView mWebView = (WebView) findViewById(R.id.fragment_bbc);
    mWebView.loadUrl("http://www.bbc.co.uk");
    

    【讨论】:

    • 我收到以下错误: - fragment_bbc 无法解析或不是字段 - WebViewFragment 无法解析为类型
    【解决方案4】:

    我认为你的实现方式是错误的。

    首先你必须这样做

    1. 将片段添加到您的父活动中
    2. 然后使用 WebViewFragment 的实例调用方法 loadUrl()

    这里是code for WebViewFragment,只需将您的网址提供给loadUrl() 方法即可。

    请检查能很好地指导您的链接。

    【讨论】:

    • 谢谢,但我是 Java 新手,我不明白你说的“向父活动添加片段”是什么意思?
    • 等等,我必须创建一个新的 Java 类吗?
    • (Fragment basic)[developer.android.com/guide/components/fragments.html]这个关于什么是片段的链接指南。 (这个例子给出了我对 fst 点的意思的答案)[vogella.com/articles/AndroidFragments/article.html]
    • 所以我必须创建一个新的 Java 类吗?我不能把它放在我当前的课堂脚本中吗?
    • 在您的项目中将有一个 Activity 类,在该类上显示您当前的片段,因此您不必创建单独的 Java 类根据 Google 在上面提到的标准修改您当前的活动 doc .
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 2014-07-28
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多