0

私は3つのタブを作ります。

言語。(言語レイアウトに言語クラスを含める)アクティベーション(アクティベートレイアウトにアクティベーションクラスを含める)設定(設定レイアウトに設定クラスを含める)

設定リストで、言語レイアウトの単語定義を非表示にするように設定を変更した場合。そして、もう一度タブ言語の単語の翻訳をクリックしてください。

私はここでタブ変更リストナーに適用する必要があると思います。

しかし、タブ変更リストナーで何をすべきか。

それが私の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);

                    }

                }


            }
        });
    }
}
4

2 に答える 2

3

多分あなたはそれらをLanguageのonResume()に入れることができます:

@Override
protected void onResume()
{
    super.onResume();
    if (Constants.TAGS_ENABLE == true) {
        // set visibility...
    }
}
于 2012-04-11T08:27:59.313 に答える
1

言語ActivityでオーバーライドonResume()し、変更された設定を確認する必要があります。変更されている場合は、ロジックを配置して翻訳を非表示にすることができます。

onResumeは、ユーザー入力がアクティビティに送信されるときに呼び出されるため、

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

}

onPause()メソッドを実装することもできます。

于 2012-04-11T08:34:47.543 に答える