意图使用putExtra在新活动中显示特定布局

时间:2012-10-05 22:27:56

标签: java android layout android-intent

我很好奇我如何使用

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

有什么想法吗?

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:2)

发送代表你的布局的int:

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

并加载

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

答案 2 :(得分:0)

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

然后,在您的接收活动中,只需将相同的int传递给setContentView(),例如:

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