Reputation: 7161
Developing an application using ActionBarSherlock, I have two tabs in the same. Both tabs have listview as shown in the image. I need to "refresh" the list of the active tab using the refresh button on the bar. What is the best possible approach to achieve the same?
How to call notifyDataSetChanged of NetworkInformationUI from MainActivity?
Below is the code snippet:
public class MainActivity extends SherlockFragmentActivity {
// Declare Variables
private FragmentTabHost mTabHost;
public boolean onOptionsItemSelected(MenuItem item) {
Toast.makeText(getApplicationContext(), "Refresh Clicked", Toast.LENGTH_LONG).show();
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("Refresh")
.setIcon(R.drawable.ic_action_refresh)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
return true;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set the view from main_fragment.xml
setContentView(R.layout.main_fragment);
// Locate android.R.id.tabhost in main_fragment.xml
mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
// Create the tabs in main_fragment.xml
mTabHost.setup(this, getSupportFragmentManager(), R.id.tabcontent);
// Create Tab1 with a custom image in res folder
mTabHost.addTab(mTabHost.newTabSpec("Network Information").setIndicator("Network Information"),
NetworkInformationUI.class, null);
// Create Tab2
mTabHost.addTab(mTabHost.newTabSpec("Trouble-Shoot N/W").setIndicator("Trouble-Shoot N/W"),
TroubleShootNWUI.class, null);
}
}
Upvotes: 1
Views: 1791
Reputation: 213
This worked for me
FragmentTabHost tabHost3 = (FragmentTabHost) findViewById(android.R.id.tabhost);
String current_tab = tabHost3.getCurrentTabTag();
if (current_tab.equals("abc")) {
ClassFragment ni = (ClassFragment) getSupportFragmentManager().findFragmentByTag("abc");
ni.refresh();
}
Upvotes: 0
Reputation: 87064
How to call notifyDataSetChanged of NetworkInformationUI from MainActivity?
When you click the refresh menu item use the FragmentManager
to get a reference to the tab fragments, which will be added to the layout in a FragmentTransaction
using the tag set on the TabHost.TabSpec
("Network Information"
for the first fragment, for example, or you could use your own tag through the TabSpec.setTag()
method):
int currentTab = mTabHost.getCurrentTab();
if (currentTab == 0) { // first tab is currently selected
NetworkInformationUI ni = (NetworkInformationUI) getSupportFragmentManager().findFragmentByTag("Network Information");
// update the list
} else {
TroubleShootNWUI tnui = (TroubleShootNWUI) getSupportFragmentManager().findFragmentByTag("Trouble-Shoot N/W");
// update the list
}
Upvotes: 1