2 dystroy dystroy 于 2013.02.26 13:29 提问

android tab 变换监听器

我创建了三个Tab.
Language (包括language 布局的language 类) Activation (包括Activation 布局的Activation类) Settings (包括Settings 布局的Settings 类)
在 settings 列表里改变 settings 可以隐藏language布局中的文字定义,然后再次点击language Tab的时候,文字翻译仍然还在。
我认为应该设置一个tab 变换监听器。
但是怎么实现tab变换监听器呢?
TabActivity:

package com.languagetranslate;
import com.languagetranslate.Constants.Constants;
import com.languagetranslate.dao.UserData;
import android.app.Activity;
import android.app.TabActivity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TabHost;
import android.widget.TextView;
import android.widget.TabHost.OnTabChangeListener;
public class Screen1 extends TabActivity {
   @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.screen1);
    initializeTabs();
    }
    private void initializeTabs() {
        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, WordsClass.class);
    // Initialize a TabSpec for each tab and add it to the TabHost
        spec = tabHost.newTabSpec("Words").setIndicator("Words")
                .setContent(intent);
        tabHost.addTab(spec);

        // Do the same for the other tabs
        intent = new Intent().setClass(this, ActivateClass.class);
        spec = tabHost.newTabSpec("Activitation").setIndicator("Activitation")
                .setContent(intent);
        tabHost.addTab(spec);
       // Do the same for the other tabs
        intent = new Intent().setClass(this, Settings.class);
        spec = tabHost.newTabSpec("Settings").setIndicator(".\n.\n.")
                .setContent(intent);
        tabHost.addTab(spec);
        tabHost.setCurrentTab(2);
        tabHost.setOnTabChangedListener(new OnTabChangeListener() {
        public void onTabChanged(String tabId) {
               if ( tabId == "Language" ){
                  Constants.TAGS_ENABLE =    UserData.getTagSettings(getApplicationContext(),
                            Constants.SETTINGS_FILE);
                    if (Constants.TAGS_ENABLE == true) {
                        LayoutInflater inflate = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                        FrameLayout item = (FrameLayout)findViewById(android.R.id.tabcontent);
                        View child = inflate.inflate(R.layout.wordlayout, null);
                            child.findViewById(R.id.availabletags).setVisibility(View.VISIBLE);
                            child.findViewById(R.id.tags).setVisibility(View.VISIBLE);

                            item.addView(child);
//                      
//                      ((TextView) findViewById(R.id.availabletags))
//                              .setVisibility(View.VISIBLE);
//                      ((ListView) findViewById(R.id.tags))
//                              .setVisibility(View.VISIBLE);
                }
                }

            }
        });
    }
}

2个回答

Baby_Bonnie
Baby_Bonnie   2013.02.26 14:11
已采纳

在 Language's onResume() 添加以下代码:

@Override
protected void onResume()
{
    super.onResume();
    if (Constants.TAGS_ENABLE == true) {
        // set visibility...
    }
}
CSDN_Ask
CSDN_Ask   2013.02.27 13:11

在 language Activity 中重写 onResume(),检查更改设置。
当在 activity 中有用户输入时,onResume 会被调用。

protected void onResume()
{
super.onResume();
if(settings_changed)
//logic here

}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!