2011-02-11 24 views
2

我有一個TabActivity其中3個標籤對所有3個標籤重複使用相同的Activity如何使用TabActivity中3個不同標籤的不同輸入相同的活動

我通過額外的手段(intent.putextras())區分其現在的問題是,當我們彼此,我通過意圖通過額外的價值來了錯誤的切換選項卡,我將顯示每個選項卡

的內容爲第二個標籤。

據我瞭解,當我們創建FirstTab時,唯一的Activity被創建,所以內容按照它被繪製。

當我們添加了secondTab意圖

,並再次存儲額外的價值,當我們創造了第三個選項卡的意圖過度寫額外的價值。

因此,當我們切換到第二個標籤時,我收到第三個標籤額外的值,因此向用戶顯示錯誤的內容。

這裏是代碼,

public class ContentsTab extends TabActivity implements OnTabChangeListener{ 

public static final String _ID = "_id"; 
public static final int ID_1 = 1; 
public static final int ID_2 = 2; 
public static final int ID_3 = 4; 

private TabHost mTabHost; 
private static Intent newIntent; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
// TODO Auto-generated method stub 
super.onCreate(savedInstanceState);  

newIntent = new Intent(this, ShowContents.class); 

mTabHost = getTabHost(); 

    newIntent.putExtra(_ID, ID_1); 
mTabHost.addTab(mTabHost.newTabSpec(INT_EXT_MEM) 
      .setContent(newIntent) 
      .setIndicator("one")); 

    newIntent.putExtra(_ID, ID_2); 
    mTabHost.addTab(mTabHost.newTabSpec(EXT_MEM)     
      .setIndicator("two") 
      .setContent(newIntent)); 

    newIntent.putExtra(_ID, ID_3); 
    mTabHost.addTab(mTabHost.newTabSpec(INT_MEM) 
      .setContent(newIntent) 
      .setIndicator("three")); 

    mTabHost.setCurrentTabByTag("one"); 

    mTabHost.setOnTabChangedListener(this); 
} 

@Override 
public void onTabChanged(String tabId) { 
    //This is only coming once the Tab is changed 
    Log.d(TAG, "onTabChanged arg0 = "+tabId);    
} 
} 

showcontents.class

public class ShowContents extends ListActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) {   
    super.onCreate(savedInstanceState);  

    Bundle extras = getIntent().getExtras(); 

    int mId_ContentType; 

    mId_ContentType = extras != null? extras.getInt(_ID): -1; 

    updateData(mId_ContentType); 

    } 
} 

在此圖示中,當 用戶按下TAB1,ShowContents.class應該接收1作爲額外設備和相同的與TAB2和TAB3 ,但接收到以下數值 Tab1 - 1 Tab2 - 4(正確值應爲2) Tab3 - 4

Tab1和Tab3的值正確。

是否有任何替代方法將正確的額外參數發送到Tab2?使用相同的類Activity

請幫我

感謝您的時間:)

+0

在此處添加清單 – 2015-06-17 06:32:23

回答

0

你需要有活動的3個不同的實例。你可以這樣做

newIntent1 = new Intent(this, ShowContents.class); 
newIntent2 = new Intent(this, ShowContents.class); 
newIntent3 = new Intent(this, ShowContents.class); 

然後使用這3個實例3個選項卡。應該是這樣的好。

+0

嘗試過,但它與原始 – Vamsi 2011-02-11 10:24:35

相關問題