简体   繁体   English

如何在Android中处理片段的WebView上的onback

[英]How to Handle onback on fragment's webview in android

In my fragment activity am using the webview.when i am clicking on the hyperlink on the webview its redirecting to the specified url its fine.but the problem is when i am clicking on back it is redirected to the home fragment instead of the previos page.Can anyone help me how to redirect to the previous page on the webview.Below is my code in the mainactivity where i am handling the fragment onback press events. 在我的片段活动中正在使用webview。当我单击webview上的超链接时,将其重定向到指定的URL很好。但是问题是当我单击背面时,它被重定向到首页片段而不是previos页面任何人都可以帮助我如何重定向到Webview的上一页。下面是我在mainactivity中处理片段后退新闻事件的代码。

private void selectItem(int position) {

    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    // Locate Position
    Fragment fragment = null;
    switch (position) {
    case 0:
        //ft.replace(R.id.content_frame, frag,"home");
        fragment=new Fagmentmain();
        /*startActivity(new Intent(MainActivity.this,Category.class));*/
        break;
    case 1:
        //ft.replace(R.id.content_frame, webfrag,"web");
        fragment=new WebFragment();
        /*Intent intent=new Intent(MainActivity.this,News.class);
        intent.putExtra("pos",0);
        startActivity(intent);*/
        //startActivity(new Intent(MainActivity.this,News.class));
        break;
    case 2:
        //ft.replace(R.id.content_frame, aboutfrag,"about");
        Intent intent1=new Intent(MainActivity.this,News.class);
        intent1.putExtra("pos",1);
        startActivity(intent1);
        break;
    case 3:
        Intent intent2=new Intent(MainActivity.this,News.class);
        intent2.putExtra("pos",2);
        startActivity(intent2);
        break;
    }
    /*ft.commit();
    mDrawerList.setItemChecked(position, true);
    setTitle(title[position]);
    mDrawerLayout.closeDrawer(mDrawerList);*/


    if(fragment != null){
        FragmentManager fragmanager=getSupportFragmentManager();
        fragmanager.beginTransaction().replace(R.id.content_frame,fragment).addToBackStack("").commit();

        mDrawerList.setItemChecked(position, true);
        setTitle(title[position]);
        mDrawerLayout.closeDrawer(mDrawerList);
    }
}


@Override
public void onBackPressed() {

    super.onBackPressed();

    FragmentManager fm = getSupportFragmentManager();
    //FragmentTab1 frag=(FragmentTab1)getSupportFragmentManager().findFragmentById(arg0)

    if (fm.getBackStackEntryCount() > 0) {


        Log.e("back stack entry", fm.getBackStackEntryCount() + "");
        fm.popBackStack();

    }

}

solved the problem by adding following code in my Fragment 通过在我的片段中添加以下代码解决了该问题

webview.setOnKeyListener(new OnKeyListener() { webview.setOnKeyListener(new OnKeyListener(){

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            // TODO Auto-generated method stub

            if((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack() ){
                webview.goBack();
                return true;
            }
            return false;
        }
    });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM