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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
自定义TabHost中选项卡的点击监听事件
而在Android上,可以用support v4中的 FragmentTabHost 来实现类似效果,它继承自 TabHost ,每个子页面都是一个 Fragment 。 今天遇到一个需求,需要在点击Tab按钮后,不切换子页面,而是跳转到一个新的页面。通过查阅文档, FragmentTabHost 与其父类 TabHost 似乎都没有提供相关函数可以自定义Tab的点击事件。只有一个当Tab切换完
TAB变换窗体 方便切换
TAB变换窗体 方便切换TAB变换窗体 方便切换TAB变换窗体 方便切换TAB变换窗体 方便切换
android selector tab文字颜色 切换效果
一.在res目录下新建一个color文件夹 二.在values文件夹下的colors文件里添加两种颜色selected和normal 三.在color文件夹下新建一个btn_selector文件 xml version="1.0" encoding="utf-8"?> selector xmlns:android="http://schemas.android.com/apk/r
android Tab 类型切换界面
实现方案:viewpager + fragment + FragmentPagerAdapter 效果图: 可以左右滑动切换选项卡,或者点击; 如果想使用fragment的时候又想可以左右滑动,就可以使用这种方式。主要的部分就在viewpager的适配器。它的适配器继承FragmentPagerAdapter. import java.util.ArrayList; imp
Android~外部类监听器~实现Activity的跳转
依旧是那个Java学习助手的开发,由于最近又在学习软件的设计模式,所以想将最近学习的简单工厂模式加入进去,个人感觉学习书上的内容不如自己实践。于是我就开始了。 然而问题也随之而来。 在设计的一个Activity中有一组功能比较相近的Button,所以不想对每个Button采用如下的方法://btn_click是先前已经注册的Button对象 btn_click.setOnClickListen
基于svg mask实现的tab切换效果
效果第一次看到这个效果是在阿里妈妈MUX的博客:UI动效—细微交互,极致体验,里面搜集的一些微交互都让人眼前一亮,恰好自己最近要做一个按钮组,就参考了里面Sergey Valiukh的一个设计。源码和上两篇博客一样,相对简单,为了节省你的阅读时间,直接上源码: 上两篇博客: D3.js SVG绘图实践:趋势缩略图 D3.js SVG绘图实践:波浪动画 <!DOCTYPE html>
FragmentTabHost、Fragment实现底部点击切换Tab页面
1.aty package com.example.louisfragmenttabhostdemo;import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.FragmentTabHost; imp
Android横向滑动导航TabLayout
参考网址http://blog.csdn.net/chenguang79/article/details/48804125<android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+
Android 监听TabHost点击事件
在做机顶盒时遇到一个问题,如何为tabhost添加点击事件,现在稍作记录,以备后用,先看代码 int tabCount = Tags.length; for (int i = 0; i < tabCount; i++) { mTabHost.getTabWidget().getChildAt(i).setOnClickListener(new OnClickListener() {
viewPager实现tab标签位置重新排序(仿网易新闻主页专题改变排序)
问题很难描述,现在viewPager加顶部tab的界面几乎特别常见了,本文的目的就是实现对顶部tab重新排序,且下面的viewPager可以正确响应新的位置。 首先,相信一开始做得人都会发现,改变adapter的数据源,并调用下面的方法 this.notifyDataSetChanged(); viewPager并不会有什么变化,并没刷新。跟踪可以发现,每次会调用一个getIte