2012-10-05 14 views
0

我很好奇,我如何去在意向到我的應用程序中的新的活動使用在意圖使用putExtra在新的活動

putExtra("something", something); 

顯示特定的佈局,

Intent i = new Intent(getApplicationContext(), MainActivity.class); 
i.putExtra("something", something) 
startActivity(i); 

我需要知道我怎麼會在發送和接收端會是什麼樣子,用於加載取決於什麼是在意圖通過putExtra發送一個特定的佈局文件。

所以,如果我發送i.putExtra(「A」,A)在接收端,它會創建R.layout.a_layout.xml

內容的看法,但如果我發送i.putExtra( 「b」,b),它會載入R.layout.b_layout.xml

任何想法?

回答

7

一個這樣做的很巧妙的方法是說:

Intent i = new Intent(getApplicationContext(), MainActivity.class); 
i.putExtra("layout", R.layout.a_layout.xml); 

將正確的佈局發送到您的新班級。然後在新班級中,您可以使用:

int layout = getIntent().getIntExtra("layout", R.layout.default_layout); 
setContentView(layout); 
+0

對於我們的默認佈局創意+1;) – JRaymond

0

R.layout.a_layout的值只是一個int。所以,只需使用putExtra("Key", R.layout.a_layout);

然後,在你的接收活動,只是通過相同的intsetContentView(),如:

public void onCreate(Bundle savedInstanceState) 
{ 
    int layout = getIntent().getIntExtra("Key", -1); 
    if (layout != -1) 
     setContentView(layout); 
} 
2

發送INT代表你的佈局:

i.putExtra("layout_id", R.layout.my_layout1); 

並加載它

setContentView(getIntent().getIntExtra("layout_id", R.layout.default_layout);