I have multiple tabs in my Activity. Each tab opens a specific URL of an e-commerce website. When I add an item to the cart from 1st tab and change the tab to 2nd tab, the item added is not updated in the 2nd tab. What should I do?
In the desktop browser, if 2 tabs are opened (of same e-commerce website) and I add an item to the cart from the 1st tab then automatically in the 2nd tab the item is also added. I want to achieve the same in android tab. Please help
FragmentWebView.java
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_web_view_categories, container, false);
progressBar = view.findViewById(R.id.progressBarWVCategories);
webView = view.findViewById(R.id.webViewCategoriesActivity);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.setWebViewClient(new MyWebViewClient());
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress < 100 && progressBar.getVisibility() == ProgressBar.GONE) {
progressBar.setVisibility(ProgressBar.VISIBLE);
}
progressBar.setProgress(newProgress);
if (newProgress == 100) {
progressBar.setVisibility(ProgressBar.GONE);
//toolbar.setTitle(webView.getTitle().trim());
}
}
});
webView.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == MotionEvent.ACTION_UP) {
if (webView.canGoBack())
handler.sendEmptyMessage(1);
else
handler.sendEmptyMessage(2);
return true;
}
return false;
}
});
if (webViewBundle == null) {
webView.loadUrl(url);
} else {
webView.restoreState(webViewBundle);
}
return view;
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//view.loadUrl();
}
}
ActivityWebView.java
private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view_categories);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
toolbar = (Toolbar) findViewById(R.id.toolbarWebViewCategories);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(WebViewCategories.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
});
Intent intent = getIntent();
String toolbarTitle = intent.getStringExtra("toolbarTitle");
String[] tabsName = intent.getStringArrayExtra("tabsName");
String[] tabsLink = intent.getStringArrayExtra("tabsLink");
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager, tabsName, tabsLink);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
getSupportActionBar().setTitle(toolbarTitle);
}
private void setupViewPager(ViewPager viewPager, String[] tabsName, String[] tabsLink) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
for (int i = 0; i < tabsName.length; i++) {
adapter.addFragment(new FragmentWebViewCategories(tabsLink[i]), tabsName[i]);
}
viewPager.setAdapter(adapter);
}
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}