我怎样才能片段从另一个AppCompatActivity类负载的WebView网址 [英] How can i load WebView URL in fragment from another AppCompatActivity class

查看:128
本文介绍了我怎样才能片段从另一个AppCompatActivity类负载的WebView网址的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建抽屉刷卡选项卡项目。还有我以前在片段中的WebView,我想从另一个AppCompatActivity加载网页视图URL。我该怎么办呢?

I am creating project for "Drawer with Swipe Tab". There i used a webview in fragment and i want to load Webview URL from Another AppCompatActivity. How can i do it?

片段类:

public class SocialFragment extends Fragment {

    ProgressBar pb_per;
    public WebView mWebView;
    View view;

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

        pb_per = (ProgressBar) view.findViewById(R.id.progressBar_book1);
        mWebView = (WebView) view.findViewById(R.id.web_book1); //This is the id you gave for webview

        //--------------------------- to over ride keyboard error ------(1)
        mWebView.setWebViewClient(new myWebClient());
        mWebView.getSettings().setJavaScriptEnabled(true);
        //--------------------------------------------------

        mWebView.getSettings().setSupportZoom(true);       //Zoom Control on web (You don't need this
        //if ROM supports Multi-Touch
        mWebView.getSettings().setBuiltInZoomControls(true); //Enable Multitouch if supported by ROM
        mWebView.setBackgroundColor(Color.parseColor("#FFFFFF"));
        mWebView.getSettings().setUseWideViewPort(true);
        mWebView.getSettings().setLoadWithOverviewMode(false);

        // Load URL
        mWebView.loadUrl("http://www.twitter.com");
        mWebView.setOnKeyListener(new 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;
            }
        });

        return view;
    }

    //===================================================================
    public class myWebClient extends WebViewClient {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            // TODO Auto-generated method stub
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub
            pb_per.setVisibility(View.VISIBLE);
            //  multi_per.setVisibility(ProgressBar.GONE);

            view.loadUrl(url);

            return true;
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);
            pb_per.setVisibility(View.GONE);
            //  multi_per.setVisibility(ProgressBar.VISIBLE);
        }
    }
}

TabFragment.Java类

public class TabFragment extends Fragment {

    public static TabLayout tabLayout;
    public static ViewPager viewPager;
    public static int int_items = 2;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        /**
         *Inflate tab_layout and setup Views.
         */
            View x =  inflater.inflate(R.layout.tab_layout,null);
            tabLayout = (TabLayout) x.findViewById(R.id.tabs);
            viewPager = (ViewPager) x.findViewById(R.id.viewpager);

        /**
         *Set an Apater for the View Pager
         */
        viewPager.setAdapter(new MyAdapter(getChildFragmentManager()));

        /**
         * Now , this is a workaround ,
         * The setupWithViewPager dose't works without the runnable .
         * Maybe a Support Library Bug .
         */

        tabLayout.post(new Runnable() {
            @Override
            public void run() {
                    tabLayout.setupWithViewPager(viewPager);
                   }
        });

        return x;

    }

    class MyAdapter extends FragmentPagerAdapter{

        public MyAdapter(FragmentManager fm) {
            super(fm);
        }


       // Return fragment with respect to Position .


        @Override
        public Fragment getItem(int position)
        {
          switch (position){
              case 0 : return new PrimaryFragment();
              case 1 : return new SocialFragment();

          }
        return null;
        }

        @Override
        public int getCount() {

            return int_items;

        }

       // This method returns the title of the tab according to the position.


        @Override
        public CharSequence getPageTitle(int position) {

            switch (position){
                case 0 :
                    return "Facebook";
                case 1 :
                    return "Twitter";
            }
                return null;
        }
    }

}

AppCompatActivity类:

public class MainActivity extends AppCompatActivity {
    DrawerLayout mDrawerLayout;
    NavigationView mNavigationView;
    FragmentManager mFragmentManager;
    FragmentTransaction mFragmentTransaction;

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

        // Setup the DrawerLayout and NavigationView
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
        mNavigationView = (NavigationView) findViewById(R.id.shitstuff);

        // Lets inflate the very first fragment
        // Here , we are inflating the TabFragment as the first Fragment
        mFragmentManager = getSupportFragmentManager();
        mFragmentTransaction = mFragmentManager.beginTransaction();
        mFragmentTransaction.replace(R.id.containerView, new TabFragment()).commit();

        // Setup click events on the Navigation View Items.
        mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem) {
                mDrawerLayout.closeDrawers();


                if (menuItem.getItemId() == R.id.nav_item_sent) {
                    //###############################From Here I Call WEBVIEW URL #######################
                    SocialFragment.mWebView.loadUrl("http://www.busindia.com/busindia_TNSTC.jsp");
                }

                if (menuItem.getItemId() == R.id.nav_item_inbox) {
                    FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction();
                    xfragmentTransaction.replace(R.id.containerView, new TabFragment()).commit();
                }

                return false;
            }
        });

        // Setup Drawer Toggle of the Toolbar
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        ActionBarDrawerToggle mDrawerToggle
                = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.app_name, R.string.app_name);

        mDrawerLayout.setDrawerListener(mDrawerToggle);
        mDrawerToggle.syncState();
    }
}

我试过@cprakashagr鉴于Solutation但低于形象得到错误见

I had Tried @cprakashagr Given Solutation but getting error See below Image

看到错误截图

推荐答案

这工作让我感谢我试图帮助

This Work for me Thanks For trying me to Help

 SocialFragment.mWebView.post(new Runnable() {


                         public void run() {
                             SocialFragment.mWebView.loadUrl("http://www.busindia.com/busindia_TNSTC.jsp");
                         }
                     });

这篇关于我怎样才能片段从另一个AppCompatActivity类负载的WebView网址的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆