diwas bhattarai
diwas bhattarai

Reputation: 95

How to go back to the parent Fragment using webview?

I have used fragments here. But I cannot go back to the parent. Swipeactivitydefault.java

 package com.pokhara.nepal;

import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;

import com.pokhara.nepal.json.TabsPagerAdapter;

public class Swipeactivitydefault extends FragmentActivity implements
        ActionBar.TabListener {

    private ViewPager viewPager;
    private TabsPagerAdapter mAdapter;
    private ActionBar actionBar;
    // Tab titles
    private String[] tabs = { "Tab1", "Tab2", "Tab3" };

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

        // Initilization
        viewPager = (ViewPager) findViewById(R.id.pager);
        actionBar = getActionBar();
        mAdapter = new TabsPagerAdapter(getSupportFragmentManager());

        viewPager.setAdapter(mAdapter);
        actionBar.setHomeButtonEnabled(false);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        // Adding Tabs
        for (String tab_name : tabs) {
            actionBar.addTab(actionBar.newTab().setText(tab_name)
                    .setTabListener(this));
        }

        /**
         * on swiping the viewpager make respective tab selected
         * */
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                // on changing the page
                // make respected tab selected
                actionBar.setSelectedNavigationItem(position);
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
            }
        });
    }

    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        // on tab selected
        // show respected fragment view
        viewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    }



}

Tab1.java

package com.pokhara.nepal;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.LinearLayout;

public class Tab1 extends Fragment {

    private WebView webView;
    private Bundle webViewBundle;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        LinearLayout ll = (LinearLayout) inflater.inflate(
                R.layout.news_activity_child, container, false);

        webView = (WebView) ll.findViewById(R.id.webview);

        webView.getSettings().setSupportZoom(true);
        webView.getSettings().setBuiltInZoomControls(true);

        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);

        webView.setWebViewClient(new MyCustomWebViewClient());

        if (webViewBundle == null) {
            webView.loadUrl("http://www.tipfortechs.com/mobile");
        } else {
            webView.restoreState(webViewBundle);
        }
        webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);

        return ll;

    }

}

Tab2.java and Tab3.java are also same as Tab 1

Just wanted to make three tabs.

TabsPagerAdapter.java

package com.pokhara.nepal.json;

import android.app.Activity;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import com.pokhara.nepal.Ekantipur;
import com.pokhara.nepal.HimalayaTimes;
import com.pokhara.nepal.NepalNews;

public class TabsPagerAdapter extends FragmentPagerAdapter {

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

    @Override
    public Fragment getItem(int index) {

        switch (index) {
        case 0:
            // Top Rated fragment activity
            return new Tab1();
        case 1:
            // Games fragment activity
            return new Tab2();
        case 2:
            // Movies fragment activity
            return new Tab3();
        }

        return null;
    }

    @Override
    public int getCount() {
        // get item count - equal to number of tabs
        return 3;
    }

}

news_activity_child.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

Help me Please!!! I want to go back to the parent fragment after opening the link from that webview.

I know there are many answer out there. The one was overiding the back button. But I donot know how to implement. I am new to this. So, can somebody help me with the code.

Upvotes: 1

Views: 1531

Answers (2)

bsentuna
bsentuna

Reputation: 381

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    //...
}
@Override
public void onBackPressed() {
    this.getParent().onBackPressed();
}

write onBackPressed() override method on tab1/tab2/tab3 fragment pages. It will help you.

Upvotes: 2

Thomas
Thomas

Reputation: 2767

I am unfamiliar with webview but I have worked with tabbed fragments.

From my experience with tabbed fragments, one way to go would be to implement a method on the main activity that "exposes your viewpager functionality" and swtiches to a desired fragment. For example:

public void showTab(int n) {
    viewPager.setCurrentItem(n);
}

Then, within the fragment you want to trigger the transition to the other fragment, you just get the reference to the acitivy and tell it to show the tab you want.

Swipeactivitydefault m = (Swipeactivitydefault )getActivity();
m.showTab(1);

Upvotes: 0

Related Questions