当前位置: 首页 > 知识库问答 >
问题:

如何在片段中使用Android webview

柳弘方
2023-03-14

HomeFragment.java

package com.example.starcitizen.fragment;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import androidx.fragment.app.Fragment;
import com.example.starcitizen.R;

public class HomeFragment extends Fragment {
    public HomeFragment(){ }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState){
        View rootView = inflater.inflate(R.layout.fragment_home, container, false);

        String url = "http://google.com";
        WebView view = (WebView) rootView.findViewById(R.id.home_webview);
        view.getSettings().setJavaScriptEnabled(true);
        view.loadUrl(url);

        return rootView ;
    }
}

fragment_home

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.starcitizen.fragment.HomeFragment">

    <WebView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/home_webview"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true" />

</RelativeLayout>

我看了其他问题。但我的应用程序不起作用。所以我想知道我是否需要修理我的主activity。所以我附上了主activity。

mainactivity.java

package com.example.starcitizen;

import android.os.Bundle;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import com.google.android.material.navigation.NavigationView;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.view.Menu;

public class MainActivity extends AppCompatActivity {

    private AppBarConfiguration mAppBarConfiguration;

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        NavigationView navigationView = findViewById(R.id.nav_view);
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        mAppBarConfiguration = new AppBarConfiguration.Builder(
                R.id.nav_home, R.id.nav_guide, R.id.nav_maps,
                R.id.nav_ships, R.id.nav_weapons, R.id.nav_mission)
                .setDrawerLayout(drawer)
                .build();
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
        NavigationUI.setupWithNavController(navigationView, navController);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onSupportNavigateUp() {
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        return NavigationUI.navigateUp(navController, mAppBarConfiguration)
                || super.onSupportNavigateUp();
    }
}

对不起,我英语不好。所以在翻译的帮助下...我第一次问了stackoverflow。

我在为韩国人做一个应用程序。但我在碎片上有些问题。

如果输入了webview,App将被关闭而不运行。

请帮帮我.

添加logcat!

null

试图理解但失败了。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />

</androidx.drawerlayout.widget.DrawerLayout>

共有1个答案

司徒钱青
2023-03-14

activity片段中使用WebView没有区别。

我无法理解您的故障排除方法,但我建议您检查以下内容。

  1. 检查清单中的权限
    <uses-permission android:name="android.permission.INTERNET" />

检查HomeFragmentOnAttach()中是否存在Runtime异常。

如果您想在fragment中看到WebView,您应该声明以下代码。

    view.setWebViewClient(new WebViewClient());

更新

    final String source = "http://google.com";
        final WebView webView = (WebView) rootView.findViewById(R.id.home_webview);
        //webView.loadUrl(url);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                //Do some like progress bar loading here.

            }

            @Override
            public void onPageFinished(WebView view, String url) {
                webView.loadUrl(source);

            }
        });
 类似资料:
  • 有没有人知道我怎么在工会上使用碎片?我已经看到了React的文档(https://www.apollographql.com/docs/React/advanced/fragments/#fragment-on-unions-and-interfaces),但对Vue的介绍不多。我有一个返回两个片段的查询,都带有__TypeName。 当vue应用程序运行时,我收到一个错误:“您正在查询中使用片段

  • 我试过了。我不成功。我正在写我的步骤。如果有人能帮我。 > 使用Android Studio创建新项目并选择“导航抽屉活动” 我将FrameLayout放在主活动中,如下所示 我使用v4创建了新类,如下所示。应用程序。碎片 我制作了碎片管理器,如下所示, 调用**public boolean onNavigationItemSelected(MenuItem项)** 我学了一点,但没能成功。这不是

  • 我正在尝试在MVVMCross Xamarin Adroid应用程序中使用ActionBar。我能够在片段中加载布局,问题是上下文总是指向MainView而不是布局视图。我试图更改上下文,但资源异常。错误是 Java.Lang.NullPointerException:尝试在 null 对象引用上调用虚拟方法 'android.content.res.Resources android.conte

  • 我在做Android项目?我有问题。我如何使用活动功能而不扩展它。因为我现在的java是碎片,所以我必须扩展碎片。请帮忙。我的代码:

  • 我有一个包含一个活动和两个片段的应用程序,在第一个片段中,我应该能够将数据插入数据库,在第二个片段中,我应该能够在一个RecyclerView中看到添加的项目。 所以我已经创建了数据库、我的RecyclerView适配器和ViewModel, 我是否应该在活动中初始化ViewModel,并以某种方式从片段中调用它来使用insert? 我是否应该在两个片段中初始化viewmodel两次? 我的代码如

  • 我遇到了一个如何在对话框片段中更新片段的问题。 当我单击过滤器菜单按钮时,会显示一个新的对话框片段,其中包括一个无线电组。 我想在单击ok按钮时更新包含位置列表的片段。 它是PlaceActive的代码,其中包含PlaceFraank: 公共类PlaceActive扩展AppCompatActive{ } 以下是PlaceFragment类的代码: 公共类PlaceFragment扩展了片段{ }