Прослушиватель вкладок Android не будет обновляться на выбранной вкладке

1

Я надеюсь, что вы можете помочь, я не могу заставить текущую вкладку перезагружаться, если выбран вкладка, а затем пользователь нажмет на нее снова, может кто-то указать, что я делаю, и, возможно, изменить свой код, чтобы показать мне что я делаю неправильно, поскольку я просмотрел много потоков здесь и через google, но теперь, кажется, кто-то знает ответ, или я просто тупой: 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();
}
  • 0
    нет проблем, мы можем это сделать, вы можете сказать мне, что TabChange Listner работает правильно или нет в приведенном выше коде.
  • 0
    Эй, спасибо, хорошо, когда вы нажимаете на вкладку, появляется сообщение, когда сообщение отклонено, и вы нажимаете на ту же вкладку, пока она еще выбрана, сообщение не будет отображаться снова. Но если вы перейдете на другую вкладку, а затем обратно, он работает нормально. Я хотел бы вызвать oncreate () при нажатии на выделенную вкладку. Я надеюсь, что это делает :)
Показать ещё 4 комментария
Теги:
tabs
actionlistener
ontouchlistener

1 ответ

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

    }
  • 0
    Спасибо, я действительно ценю это, я попробую, когда буду рядом за компьютером :)
  • 0
    Эй, только что вернулся к моему компьютеру, это исключение, которое я не нашел, я попытался отладить его, если у тебя будет время, дерзко, я знаю, ты взглянешь? dl.dropbox.com/u/3591433/HelloTabWidget.zip
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню