我做了一个小应用程序,其中包含以下活动:
配置文件活动
查找活动
搜索活动
结果活动
配置文件和查找活动都有一个按钮,一旦我单击它,它就会打开搜索活动。
搜索活动提供了一些选项,当我单击 所需的选项将打开结果活动。
我的目标如下:
如果我通过配置文件活动到达结果活动,我想有一个按钮,该按钮具有一些onClick侦听器,其文本为"添加">
如果我通过查找活动到达结果活动,我希望有一个具有不同onClick侦听器的按钮,其文本是"我想要它">
到目前为止,我所做的基本上是创建了具有不同名称的完全相同的类和活动,唯一的区别是按钮,但我确定有更好的方法。
我想也许有一个选项可以更改按钮 id,每个 id 都会执行不同的操作
任何建议都将得到认可。
使用来自个人资料或搜索活动的 Intent Extras 发送标签。在"结果活动"中,根据收到的标记创建if()
或switch()
条件。根据标记和按钮setTag(String)
分配名称。在您的活动中实现 OnClickListener。
@Override
public void onClick(View v) {...}
不是基于v.getId()
创建条件,而是基于v.getTag()
创建条件。
您可以从配置文件>搜索>结果活动或同一键上的查找>搜索>结果活动传递一些意图数据(如布尔值或活动类名称(,并将该数据从第一个活动传递到最后一个活动。
这将帮助您了解您是来自个人资料活动还是查找活动,并且根据该意图数据,您可以在单击btn时轻松进行检查。
您还可以在进入结果活动后立即根据它更改 btn 的文本。
Button btn = findViewById(R.id.btn);
String comingFrom = getIntent().getStringExtra("COMING_FROM");
if(comingFrom.equalsIgnoreCase("ProfileActivity")) {
btn.setText("Add");
} else {
btn.setText("I want it");
}
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(comingFrom.equalsIgnoreCase("ProfileActivity")) {
// your code
} else {
// your code
}
}
});