1

使用ActionBarSherlock开发应用程序,我有两个相同的选项卡。如图所示,两个选项卡都有列表视图。我需要使用栏上的刷新按钮“刷新”活动选项卡的列表。实现相同目标的最佳方法是什么?

如何从 MainActivity 调用 NetworkInformationUI 的 notifyDataSetChanged?

下面是代码片段:

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




        }
}

在此处输入图像描述

4

2 回答 2

1

如何从 MainActivity 调用 NetworkInformationUI 的 notifyDataSetChanged?

当您单击刷新菜单项时,使用FragmentManager来获取对选项卡片段的引用,该引用将被添加到布局中,FragmentTransaction使用设置在TabHost.TabSpec("Network Information"例如,对于第一个片段的标签,或者您可以使用您自己的标签通过TabSpec.setTag()方法):

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
}
于 2013-10-29T17:15:41.573 回答
0

这对我有用

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();
                        }
于 2017-03-05T21:17:32.723 回答