Tabhostとサブインタフェースactivity間のコントロール相互運用
5448 ワード
このタイトルの意味は、Tabhost自体とサブTabのactivity間のコントロール呼び出しの問題を解決することです.例えば、サブTabがこのactivityでmenuキーを押して、親Tabhostの下部menuを隠すことを望んでいる場合、どのように実現しますか?
急にこの問題を解決するには決して焦らないでください.私の菜鳥は一枚です.
以下は私の例と解決方法です.
下部のmenuはradiogroupで構成されています.
1、Tabhostでonkeydownを設定し、radiogroupを設定し、試験に失敗した.
2、同様にTabhostにtabHostを設定.getTabWidget().getChildAt(0).setOnClickListener(new OnClickListener()…同じくダメです.
なぜなら、サブtabであなたのボタン操作が直接サブtab自体を指しているからです.
これで終わりだ,二つの独立したものがどうして互いに呼び出されるのか.私は子TabにToast--Toastと書いてみました.makeText(StartActivity.this, this.getParent().getClass().toString(), Toast.LENGTH_SHORT).show();
見つけたのは「tabtest」(私のTabhostクラス名)です.問題解決の鍵はここにある.
親が見つかった以上、親はradiogroupを直接操作できます.親クラスのradiogroupをgetとsetメソッドで露出すれば設定できます.
親Tabhostのコードは次のとおりです.
サブtabのactivityの関連コードは次のとおりです.
コードが書き終わり、効果が実現します.もちろんTabhostでradiogroupの非表示と表示にダイナミック効果を追加し、より人間的にすることもできます.
必要な同僚に参考にしてください.
tabhostでサブtabのコントロールを操作する方法については、tabHostを使用してヒントを与えます.getTabWidget().getChildAt(0).……
(完)~
急にこの問題を解決するには決して焦らないでください.私の菜鳥は一枚です.
以下は私の例と解決方法です.
下部のmenuはradiogroupで構成されています.
1、Tabhostでonkeydownを設定し、radiogroupを設定し、試験に失敗した.
2、同様にTabhostにtabHostを設定.getTabWidget().getChildAt(0).setOnClickListener(new OnClickListener()…同じくダメです.
なぜなら、サブtabであなたのボタン操作が直接サブtab自体を指しているからです.
これで終わりだ,二つの独立したものがどうして互いに呼び出されるのか.私は子TabにToast--Toastと書いてみました.makeText(StartActivity.this, this.getParent().getClass().toString(), Toast.LENGTH_SHORT).show();
見つけたのは「tabtest」(私のTabhostクラス名)です.問題解決の鍵はここにある.
親が見つかった以上、親はradiogroupを直接操作できます.親クラスのradiogroupをgetとsetメソッドで露出すれば設定できます.
親Tabhostのコードは次のとおりです.
1 private boolean groupvisible;//groupvisible
2 private RadioGroup group;//group
3
4 /**
5 *
6 * @return
7 */
8 public boolean getgroupisvisible(){
9 return this.groupvisible;
10 }
11
12 /**
13 *
14 * @param visible
15 */
16 public void setgroupvisible(boolean visible){
17 groupvisible=visible;
18 if(visible){
19 group.setVisibility(View.VISIBLE);
20 }else{
21 group.setVisibility(View.GONE);
22 }
23 }
24
サブtabのactivityの関連コードは次のとおりです.
1 @Override
2 public boolean onKeyDown(int keyCode, KeyEvent event) {
3 if(keyCode == KeyEvent.KEYCODE_MENU && event.getRepeatCount() == 0){
4 boolean groupvisible= ((TabTest)this.getParent()).getgroupisvisible();// 5 ((TabTest)this.getParent()).setgroupvisible(!groupvisible);// 6 }else{
7
8 }
9 return true;
10 }
コードが書き終わり、効果が実現します.もちろんTabhostでradiogroupの非表示と表示にダイナミック効果を追加し、より人間的にすることもできます.
必要な同僚に参考にしてください.
tabhostでサブtabのコントロールを操作する方法については、tabHostを使用してヒントを与えます.getTabWidget().getChildAt(0).……
(完)~