Android: как изменить ImageButton в TabActivity на основе выбора вкладки

У меня есть следующая TabActivity

введите здесь описание изображения

Теперь, когда я выбираю вкладку «Рассчитать сумму», кнопка изображения вверху должна измениться на другую кнопку изображения, а когда выбрана вкладка «Члены», кнопка не должна отображаться. ImageButton находится в TabActivity. Как я могу добиться динамического изменения кнопки на основе выбора вкладок?

Вот моя TabActivity:

public class TransactionTab extends TabActivity{
    String groupid="";
    TabHost tb;
    TabSpec tab1,tab2,tab3;
    Intent translist,settleamt,mems;
    Context context = TransactionTab.this;
    ImageButton v_createtrans;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.transactiontab);

        Intent grpintent = getIntent();
        groupid = grpintent.getStringExtra("grpid");

        tb = (TabHost)findViewById(android.R.id.tabhost);
        v_createtrans = (ImageButton)findViewById(R.id.x_createtrans);

        tab1 = tb.newTabSpec("id1");
        tab2 = tb.newTabSpec("id2");
        tab3 = tb.newTabSpec("id3");

        mems = new Intent(context,MemberList.class);
        mems.putExtra("grpid", groupid);
        mems.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        translist = new Intent(context,TransactionList.class);
        translist.putExtra("grpid", groupid);
        translist.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        settleamt = new Intent(context,SettleAmount.class);
        settleamt.putExtra("grpid", groupid);
        settleamt.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        View layview = LayoutInflater.from(context).inflate(R.layout.tab_buttonbg, null);
        Button bt = (Button) layview.findViewById(R.id.tabuton);
        bt.setText("Members");
        tab1.setIndicator(layview);
        tab1.setContent(mems);

        layview = LayoutInflater.from(context).inflate(R.layout.tab_buttonbg, null);
        Button bt1 = (Button) layview.findViewById(R.id.tabuton);
        bt1.setText("Transactions");
        tab2.setIndicator(layview);
        tab2.setContent(translist);

        layview = LayoutInflater.from(context).inflate(R.layout.tab_buttonbg, null);
        Button bt2 = (Button) layview.findViewById(R.id.tabuton);
        bt2.setText("Settle Amt");
        tab3.setIndicator(layview);
        tab3.setContent(settleamt);

        tb.getTabWidget().setDividerDrawable(R.drawable.divider);

        tb.addTab(tab1);
        tb.addTab(tab2);
        tb.addTab(tab3);

        tb.setCurrentTab(1);

        v_createtrans.setOnClickListener(new OnClickListener(){
            public void onClick(View v){
                Intent newtrans = new Intent(context,NewTransaction.class);
                newtrans.putExtra("grpid", groupid);
                startActivity(newtrans);
            }
        });

    }

и макет xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:background="@color/grey_color">

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:background="@color/app_header_color">

        <ImageButton 
            android:id="@+id/x_createtrans"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/addbtn"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="10dp"
            android:background="@null">
        </ImageButton>

    </RelativeLayout>

    <TabHost
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@android:id/tabhost">

        <LinearLayout
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:orientation="vertical">

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#ffffff">
            </TabWidget>

            <FrameLayout
                android:layout_height="fill_parent"
                android:layout_width="fill_parent"
                android:id="@android:id/tabcontent">
            </FrameLayout>

        </LinearLayout>

    </TabHost>

</LinearLayout>

person Dileep Perla    schedule 20.04.2012    source источник


Ответы (1)


попробуй использовать

   TabHost.SetOnTabChangedListener(this){
 protected void OnTabChanged()
 {

 }
}
person Zaz Gmy    schedule 20.04.2012
comment
В этом методе, как мы можем узнать, какая вкладка была выбрана/изменена? Можете ли вы предоставить мне пример кода. - person Dileep Perla; 20.04.2012
comment
см. этот stackoverflow.com/questions /2243360/ - person Zaz Gmy; 20.04.2012
comment
Спасибо. Он отлично работает. Можем ли мы получить доступ к кнопке в TabActivity из вкладки. Я имею в виду, что если мы нажмем кнопку в TabActivity, внутри вкладки должно быть выполнено какое-то действие. - person Dileep Perla; 20.04.2012