简体   繁体   中英

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.

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() {

        @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;
        }
    });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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