Как использовать OnTabChangeListener? - PullRequest
2 голосов
/ 28 ноября 2011

У меня есть программа для Android с 3 вкладками. Когда я нажимаю на вкладку «Карта», я хочу, чтобы она отображала сообщение «Карта выбрана», как показано на рисунке ниже. Но если я нажму на вкладку «Имя», а затем вернусь на вкладку «Карта» во второй раз, сообщение «Карта снова выбрана» не будет отображаться на экране. Как сделать так, чтобы на вкладке «Карта» отображалось сообщение «Карта выбирается снова» каждый раз, когда я выбираю эту вкладку? Можете ли вы отредактировать следующий код и показать пример использования OnTabChangeListener?

public class MapsActivity extends MapActivity implements OnTabChangeListener {    

@Override
public void onCreate(Bundle savedInstanceState)
{ 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main4);
    Toast.makeText(getApplicationContext(),"Map is Selected", Toast.LENGTH_LONG).show();        
}

public void onTabChanged(String tabId) {
    Toast.makeText(getApplicationContext(),"Map Selected Again", Toast.LENGTH_LONG).show(); 
}

@Override
protected boolean isRouteDisplayed() {
    return false;
} }

enter image description here

Обновлен. но следующий метод не выводит сообщение.

`public class HelloTabWidget extends TabActivity implements OnTabChangeListener{`

    private TabHost mTabHost;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Resources res = getResources(); 
        TabHost tabHost = getTabHost();  
        TabHost.TabSpec spec;  
        Intent intent; 

        intent = new Intent().setClass(this, BarActivity.class);
        spec = tabHost.newTabSpec("Name").setIndicator("Name",res.getDrawable(R.drawable.ic_tab_name)).setContent(intent);
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, CityActivity.class);
        spec = tabHost.newTabSpec("city").setIndicator("City",res.getDrawable(R.drawable.ic_tab_city)).setContent(intent); 
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, MapsActivity.class);
        spec = tabHost.newTabSpec("Map").setIndicator("Map",res.getDrawable(R.drawable.ic_tab_map)).setContent(intent);
        tabHost.addTab(spec);        

        tabHost.setCurrentTab(2);
    }

    public void onTabChanged(String tabId) {
        mTabHost = getTabHost();
        mTabHost.setOnTabChangedListener(this);
        Toast.makeText(getApplicationContext(), "To check for Display", Toast.LENGTH_LONG).show();
        Log.i("selected tab index", "Current index - "+ mTabHost.getCurrentTab());      
    }} 

1 Ответ

3 голосов
/ 28 ноября 2011

Вы должны реализовать OnTabChangeListener для класса TabActivity, а не для содержимого Tab.

В вашей реализации TabActivity OnTabChangeListener

затем установить прослушиватель для TabHost mTabHost.setOnTabChangedListener(this);

@Override
    public void onTabChanged(String tabId) {
        Log.i("selected tab ", tabId);

    }

ОБНОВЛЕНИЕ

public class HelloTabWidget extends TabActivity implements OnTabChangeListener{`

    private TabHost mTabHost;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Resources res = getResources(); 
        TabHost tabHost = getTabHost();  
        TabHost.TabSpec spec;  
        Intent intent; 
        mTabHost = getTabHost();


        intent = new Intent().setClass(this, BarActivity.class);
        spec = tabHost.newTabSpec("Name").setIndicator("Name",res.getDrawable(R.drawable.ic_tab_name)).setContent(intent);
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, CityActivity.class);
        spec = tabHost.newTabSpec("city").setIndicator("City",res.getDrawable(R.drawable.ic_tab_city)).setContent(intent); 
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, MapsActivity.class);
        spec = tabHost.newTabSpec("Map").setIndicator("Map",res.getDrawable(R.drawable.ic_tab_map)).setContent(intent);
        tabHost.addTab(spec);        

        tabHost.setCurrentTab(2);
        mTabHost.setOnTabChangedListener(this);
    }

    public void onTabChanged(String tabId) {
        Toast.makeText(getApplicationContext(), "Selected Tab "+tabId, Toast.LENGTH_LONG).show();
        Log.i("selected tab index", "Current index - "+ mTabHost.getCurrentTab());      
    }} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...