Android标签监听器不会在所选标签上刷新

时间:2012-05-18 10:33:12

标签: android tabs actionlistener ontouchlistener

我希望你能提供帮助,如果当前选择了一个标签然后用户再次点击它,我似乎无法重新加载当前标签,有人可能会指出我在做什么并且可能会修改我的代码向我展示我做错了什么,因为我在这里看了很多线程并通过谷歌但现在似乎知道了答案,或者我只是愚蠢:D谢谢你:)

public class HelloTabWidget extends TabActivity implements OnClickListener {

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Resources res = getResources(); // Resource object to get Drawables
final TabHost tabHost = getTabHost();  // The activity TabHost
TabHost.TabSpec spec;  // Resusable TabSpec for each tab
Intent intent;  // Reusable Intent for each tab

// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent().setClass(this, ArtistsActivity.class);


// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("artists").setIndicator("Artists",
              res.getDrawable(R.drawable.ic_tab_artists))
          .setContent(intent);
tabHost.addTab(spec);

// Do the same for the other tabs
intent = new Intent().setClass(this, AlbumsActivity.class);
spec = tabHost.newTabSpec("albums").setIndicator("Albums",
              res.getDrawable(R.drawable.ic_tab_albums))
          .setContent(intent);
tabHost.addTab(spec);

intent = new Intent().setClass(this, SongsActivity.class);
spec = tabHost.newTabSpec("songs").setIndicator("Songs",
              res.getDrawable(R.drawable.ic_tab_songs))
          .setContent(intent);
tabHost.addTab(spec);

tabHost.setCurrentTab(0);

tabHost.setOnTabChangedListener(new OnTabChangeListener() {

public void onTabChanged(String tabId) {
   // Log.d(debugTag, "onTabChanged: tab number=" + mTabHost.getCurrentTab());

    switch (tabHost.getCurrentTab()) {
    case 0:
        //do what you want when tab 0 is selected
            test();
        break;


    case 1:
        //do what you want when tab 1 is selected
        break;
    default:

        break;
    }
}
});     
}

public void test (){

AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Warning");
alert.setMessage("You are about to self-destruct!");
alert.show();
}

1 个答案:

答案 0 :(得分:0)

首先在应用程序类中创建一个变量,如下所示:

public class GlobalClass extends Application {
    public int displayTab = 0;

    public int getDisplayTab() {
        return displayTab;
    }

    public void setDisplayTab(int displayTab) {
        this.displayTab = displayTab;
    }
}

并按以下方式修改您的活动:

    public class HelloTabWidget extends TabActivity implements OnClickListener {


    GlobalClass globel;

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    globel = (GlobalClass) getApplication();

    Resources res = getResources(); // Resource object to get Drawables
    final TabHost tabHost = getTabHost();  // The activity TabHost
    TabHost.TabSpec spec;  // Resusable TabSpec for each tab
    Intent intent;  // Reusable Intent for each tab

    // Create an Intent to launch an Activity for the tab (to be reused)
    intent = new Intent().setClass(this, ArtistsActivity.class);


    // Initialize a TabSpec for each tab and add it to the TabHost
    spec = tabHost.newTabSpec("artists").setIndicator("Artists",
                  res.getDrawable(R.drawable.ic_tab_artists))
              .setContent(intent);
    tabHost.addTab(spec);

    // Do the same for the other tabs
    intent = new Intent().setClass(this, AlbumsActivity.class);
    spec = tabHost.newTabSpec("albums").setIndicator("Albums",
                  res.getDrawable(R.drawable.ic_tab_albums))
              .setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, SongsActivity.class);
    spec = tabHost.newTabSpec("songs").setIndicator("Songs",
                  res.getDrawable(R.drawable.ic_tab_songs))
              .setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(globel.getDisplayTab());


//Here Handling first tab click 
         getTabWidget().getChildAt(0).setOnClickListener(new OnClickListener() {
                        @Override
                        public void onClick(View v) {
                                                test();
                            Log.d("Clickedddddddddddd", "1"
                                    + getTabHost().getCurrentTabTag());
                            HelloTabWidget.this.finish();
                            globel.setDisplayTab(0);
                            Intent i = new Intent(HelloTabWidget.this, HelloTabWidget.class);
                            startActivity(i);

                        }
                    });

    }
    public void test (){

    AlertDialog.Builder alert = new AlertDialog.Builder(this);
    alert.setTitle("Warning");
    alert.setMessage("You are about to self-destruct!");
    alert.show();
    }

    }
相关问题