0

アプリに新しいタブレイアウトを追加しています。私のアプリには4つのアクティビティがあります。

以前は、ナビゲーションはアクティビティに表示されたボタンで行われていました。たとえば、アクティビティ1のボタンを使用すると、セクション4に移動できます。各ボタンは、新しいインテントで新しいアクティビティを開始していました。戻るには、ユーザーはネイティブデバイスの戻るボタンを押すことができます。

ボタンの例:

Button b1= (Button) findViewById(R.id.b1);
    b1.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(this, ActivityTab4.class);
            startActivity(i);                           
        }
   });

これで、タブホストを使用すると、ユーザーはアクティビティを希望するようになり、各アクティビティは私のタブホストの子になります。ただし、特定のアクティビティに直接ジャンプするいくつかのボタンを保持するために、レイアウトを維持する必要があります。

これらのボタンの問題は、新しいアクティビティを開始すると、タブホストが消えることです。私はそれを常に保つ必要があります。

では、タブホストを通常どおりに使用するにはどうすればよいですか。また、セクションのレイアウト内でカスタムボタンを使用して、ボタンを押したときにタブホストを保持することもできますか?

私のタブホスト構造は非常に基本的です:

public class TabWidget extends TabActivity {    

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.global_tabs);
    setTabs() ;     
    }   

private void setTabs() {        
    addTab("Act1", R.drawable.tab1, ActivityTab1.class);
    addTab("Act2", R.drawable.tab2, ActivityTab2.class);        
    addTab("Act3", R.drawable.tab1, ActivityTab3.class);
    addTab("Act4", R.drawable.tab2, ActivityTab4.class);
    }

private void addTab(String labelId, int drawableId, Class<?> c) {

    TabHost tabHost = getTabHost();
    Intent intent = new Intent(this, c);
    TabHost.TabSpec spec = tabHost.newTabSpec("tab" + labelId); 

    // SET TITLETAB
    View tabIndicator = LayoutInflater.from(this).inflate(R.layout.tab_indicator, getTabWidget(), false);
    TextView title = (TextView) tabIndicator.findViewById(R.id.titleTab);
    title.setText(labelId);

    // SET IMAGETAB
    ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon);
    icon.setImageResource(drawableId);

    spec.setIndicator(tabIndicator);
    spec.setContent(intent);
    tabHost.addTab(spec);
    }}

ご協力いただきありがとうございます

編集:フラグメントを実装するのに多くの時間がかかり、さらにAPI <11と互換性を持たせるために、フラグメントを避けたいと思います

4

2 に答える 2

0

フラグメントの代わりにタブホストとアクティビティを使用する理由はありますか? Fragments は、あなたがやろうとしていることにより適していると思います。

あなたの質問については、表示されるタブを切り替えることができます

 void   setCurrentTab(int index) 
 void   setCurrentTabByTag(String tag)

ボタンを押してアクティビティを手動で開始する必要はありません。これらの方法を使用して表示されるタブを切り替えるだけです。

于 2013-02-13T14:46:57.060 に答える