【问题标题】:Hot to refresh a WebView from another class热刷新另一个类的 WebView
【发布时间】:2016-01-11 14:22:46
【问题描述】:

如何刷新另一个类的 webview?

Webview 类:

WebView myWebView;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_plan1, container, false);
    myWebView = (WebView) rootView.findViewById(R.id.wvheute);
    myWebView.getSettings().setJavaScriptEnabled(true);
    myWebView.loadUrl("TEST URL");
    return rootView;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

我想从我的 mainactivity 刷新这个 webview

public class Hauptfenster extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hauptfenster);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);


        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);

        FragmentManager fn = getFragmentManager();
        fn.beginTransaction().replace(R.id.content_frame, new fragment_plan1()).commit();

    }

    @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }

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

    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {

        FragmentManager fm = getFragmentManager();

        int id = item.getItemId();

        if (id == R.id.nav_plan1) {

            fm.beginTransaction().replace(R.id.content_frame, new fragment_plan1()).commit();

// I WANT THAT THE REFRESH HAPPENS HER :)

        } else if (id == R.id.nav_plan2) {

            fm.beginTransaction().replace(R.id.content_frame, new fragment_plan2()).commit();


        }

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }
}

有人可以帮帮我吗?

【问题讨论】:

  • 您的WebView 是否在另一个Fragment 或活动中?你也可以上传WebView的全班吗?

标签: java android webview refresh


【解决方案1】:

保存您的另一个Fragment 的实例并将其传递给您的replace

private fragment_plan1 fragment=new fragment_plan1();

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_hauptfenster);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);


    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

    FragmentManager fn = getFragmentManager();
    fn.beginTransaction().replace(R.id.content_frame, fragment).commit();

}

在您的WebView 片段中创建一个新方法

public void refreshPage()
{
    myWebView.reload();
}

当你想调用Activity中的方法

fragment.refreshPage();

【讨论】:

  • 你好,谢谢你的帮助,但我不知道该怎么做,我在 java 中不是很好:) 刚开始编码
  • @user5762515 我认为我的说明很简单。只需复制第一个代码,将第二部分代码添加到您拥有 WebView 的片段中,并在您想要刷新页面时在您的活动中调用 fragment.refreshPage()
  • @user5762515 不要用该代码替换 Activity 类中的 onCreate() 方法
  • @user5762515 如果您按照我的说明进行操作,它应该可以工作。它给你什么错误?
猜你喜欢
  • 1970-01-01
  • 2012-09-04
  • 1970-01-01
  • 1970-01-01
  • 2014-10-31
  • 1970-01-01
  • 2015-08-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多