2011-11-22 31 views
0

我的按鈕發送一個參數給函數。參數按鈕來改變活動

<Button 
    android:id="@+id/tela1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Chinese Day" 
    android:onClick="loadPage" 
    android:tag="page1" 
    /> 

我的函數應該使用此參數來加載page1活動。

public void loadPage(View view) { 
    String page = (String) view.getTag();     
    setContentView(R.layout.page); 
} 

如何使這項工作?

韓國社交協會

+0

什麼是你的任務? –

+0

您是否正在嘗試加載此參數名稱的活動?你能否明確提出你的問題? – Ian

+0

爲什麼你想從標籤獲取活動名稱?您可以使用loadPage方法的意圖直接啓動活動。 **意圖意圖=新意圖(上下文,page1.class); ** ** context.startActivity(意圖); ** – Ian

回答

0

你想在按鈕的標籤中指定佈局的名稱,對不對? 請嘗試以下操作:

String page = (String) view.getTag(); 
int layoutId= getResources().getIdentifier(page, "layout", getPackageName());   
setContentView(layoutId);  

希望這會有所幫助。

+0

完美的我的朋友...... TKS ... – Spiderpoison

+0

接受的答案,幫助別人類似的問題。 – Flavio

0

你可以使用Java反射API

每個活動是在R.layout的整數。您只需要搜索R.layout中的屬性,然後獲取其整數值以推入setContentView

try { 
    String tag = (String) btn.getTag(); // Button in variable "btn" 

    Class<R.layout> cls = R.layout.class; 
    Field field = cls.getDeclaredField(tag); 

    Integer obj = (Integer) field.get(null); // You could do these two in one line 
    int value = obj.intValue(); 

    Log.i("Test", "Actvity id code = " + obj.toString()); // Testing code 
    setContentView(value); 
} 
catch (Exception e) { 
    e.printStackTrace(); 
    return; 
}