从Fragment到Activity获取WebView对象

时间:2014-12-05 14:09:30

标签: java android

在我的Action Bar中有一个按钮,您可以在其中添加收藏夹,但要做到这一点,我需要拥有mWebView这个我无法从{{1}获得的对象尽管在FavoriteFragment中使用相同的代码进入MainActivity,但只要onclick触发它就会崩溃。

我怎样才能在我的活动中获得LoadUrlFragment而不会崩溃?

MainActivity

mWebView

LoadUrlFragment

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (mDrawerToggle.onOptionsItemSelected(item)) {
        return true;
    }

    switch (item.getItemId()) {
    case R.id.action_favoriten:
        if (fragmentName.equals("LoadUrlFragment")) {
            WebView mWebView = ((LoadUrlFragment) fragment).getMWebView();
            mWebView.loadUrl("javascript:window.HTMLOUT.saveFavoriteData('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
        } else if(fragmentName.equals("FavoritenFragment")) {
            WebView mWebView = ((LoadUrlFragment) fragment).getMWebView();
            mWebView.loadUrl("javascript:window.HTMLOUT.saveFavoriteData('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
        } else {
            Toast.makeText(activity, "Favoriten können hier nicht gesetzt werden", Toast.LENGTH_SHORT).show();
        }

        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

FavoriteFragment

public WebView getMWebView() {
    return mWebView;
}

我热爱我的LoadUrlFragment

的FavoriteFragment
public WebView getMWebView() {
    WebView mWebView = ((LoadUrlFragment) fragment).getMWebView();

    return mWebView;
}

logcat的

fragment = new LoadUrlFragment();
Bundle bundle = new Bundle();
bundle.putString("url", allFavorite.get(position).getUrl());
fragment.setArguments(bundle);

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();

transaction.replace(R.id.frame_container, fragment);
transaction.addToBackStack(null);
transaction.commit();

1 个答案:

答案 0 :(得分:0)

我认为你应该改变

else if(fragmentName.equals("FavoritenFragment")) {
        WebView mWebView = ((LoadUrlFragment) fragment).getMWebView();

else if(fragmentName.equals("FavoritenFragment")) {
        WebView mWebView = ((FavoritenFragment) fragment).getMWebView();

这看起来像一个很好的副本&amp;基于粘贴的异常:))