0

別のアクティビティのメソッドからリストビューによって入力されている TabActivity にタブがあります。タブのリストビューをクリックすると、リストビューの項目を onContextItemSelected から削除し、タブホストのタブに、リストビューを設定したアクティビティの同じメソッドをコールバックさせようとしています。リストビューメソッドを持つアクティビティからアクションが実行されたタブを特定する方法を知っている人はいますか?

他のタブには setTag() のような既知のメソッドがあり、それらを識別するようです。私は TabActivity クラスにいる場合に機能するこれを試しましたが、他のアクティビティにいる場合は、fillAllData() を呼び出す必要があります。しかし、行がデッドコードであり、代わりにfillShopData()を呼び出しているというEclipseからの警告が表示されます。これを回避する方法についてのアイデアはありますか?..私が自分自身を明確にしたことを願っています. ありがとう。

 /* code in activity class after delete is pressed in onContextItemSelected*/
    if( Categories.SHOP_TAB_TAG == 1) { // tab in categories TabActivity identified as int
        fillShopData(); // fill this data back in tab
        }else {
         fillAllData(); //  Dead Code from Activity
}
4

1 に答える 1

0

次のように OnTabChangedListener で変更する、選択されたタブを追跡する定数クラスに静的変数を含めることができます。

@Override
public void onTabChanged(String tabId) {
    if (tabId.equalsIgnoreCase("Assigned")) {
        Constants .LIST_ACTIVITY = 0;
    } else if (tabId.equalsIgnoreCase("Accepted")){
        Constants .LIST_ACTIVITY = 1;
    }else if (tabId.equalsIgnoreCase("Rejected")){
        Constants .LIST_ACTIVITY = 2;
    }else if (tabId.equalsIgnoreCase("Completed")){
        Constants .LIST_ACTIVITY = 3;
    }
}

ここで、tabId はタブの作成時に指定したものです。これは静的変数であるため、どのクラスでもフラグとしてアクセスできます。

于 2011-07-26T06:06:35.147 に答える