我在主要活动上有一个按钮,单击该按钮会运行一个方法。在该方法中,我有第二个活动的意图,但我想使用第一个活动的按钮设置该活动的内容视图,因为我想在第一个活动上有多个按钮,但重用第二个活动和只需更改布局。所以....
单击 button1 > 将视图设置为 layout1 > 以 layout1 作为内容视图启动活动或单击 button2 > 将视图设置为 layout2 > 以 layout2 作为内容视图启动活动
我想这样做以避免创建太多活动
谢谢
我在主要活动上有一个按钮,单击该按钮会运行一个方法。在该方法中,我有第二个活动的意图,但我想使用第一个活动的按钮设置该活动的内容视图,因为我想在第一个活动上有多个按钮,但重用第二个活动和只需更改布局。所以....
单击 button1 > 将视图设置为 layout1 > 以 layout1 作为内容视图启动活动或单击 button2 > 将视图设置为 layout2 > 以 layout2 作为内容视图启动活动
我想这样做以避免创建太多活动
谢谢
有很多方法可以做到这一点。这里只是其中的几个:
通过向意图 (putExtra) 添加额外的 int 来传递要使用哪个布局的参数,并在第二个活动的 onCreate 上使用意图来获取它。
使用片段而不是活动,你会有更多的方法来做到这一点。
不推荐 - 使用静态 int。
单击其中一个按钮时,您将通过一个意图启动第二个活动,如果单击第一个按钮,则将值 1,如果单击第二个按钮,则将值 2。
然后在第二个活动中,您从 Intent 中读取一个值,如果它是 1,则将 ContentView 设置为第一个布局,如果它是 2,则设置为第二个布局。
使用 Intent.putExtra(String key, int data) 向您的意图添加额外信息。然后在第二个活动中使用 getIntent().getIntExtra(key)。您可以为数据使用除整数以外的其他值,但我建议您使用它,以便您可以轻松地使用 switch 块。
编辑:
此外,正如 yarian 所说:
您可以只传递布局本身,它只是一个位于 R 文件中的 int。
这样做可能是一个好主意来消除 switch 块(除非您还需要执行其他代码,但这仍然是一个好主意,因为您不会为要传递的每个布局定义单独的常量)所以在您的第一个活动说:
intent.putExtra("LAYOUT", R.layout.layout_name);
在第二个:
setContentView(getIntent().getIntExtra("LAYOUT"), DEFAULTVALUE);
希望我有所帮助!