gpt4 book ai didi

java - 开始 Activity 的动态 Intent 参数

转载 作者:行者123 更新时间:2023-11-29 02:58:49 26 4
gpt4 key购买 nike

我想创建一个启动 Activity 的方法。我不想每次都这样写:

Intent intent = new Intent(this, LoginActivity.class);
startActivity(intent);

相反,我想像这样使用它:(使用 1 行而不是 2 行)

ShowActivity(LoginActivity);

通过使用像这样的自定义方法:

public void ShowActivity(Activity act)
{
Intent intent = new Intent(this, act.class);
startActivity(intent);
}

并且可能进一步重载:

public void ShowActivity(Activity act, boolean finish)
{
Intent intent = new Intent(this, act.class);
startActivity(intent);

if(finish)
CurrentActivity.this.finish();
}

无论如何,它给出了找不到符号错误(顺便说一下,我不知道为什么是cannot而不是cannot)。是否可以这样做,如果可以,这样做是否合理? (最后一个)如果是,为什么不嵌入一个单行方法来执行此操作?

作为 Java 新手,我是否认为这种方法太“C#ish”了?

提前致谢。

附言我是 Java 和 Android 菜鸟,所以我什至不确定问题的标题。我不知道如何更好地提问,因此我无法正确搜索这个问题是否重复。如果是这样,我们深表歉意。

最佳答案

定义一个 util 类,如下所示:

public class AcitivtyUtil {
public static void showActivity(Activity from, Class<?> to, boolean finish) {
Intent intent = new Intent(from, to);
from.startActivity(intent);
if (finish) {
from.finish();
}
}
}

然后您可以在任何 Activity 调用 ActivityUtil.showActivity(this, TargetActivity.class, true|false)

您的代码中存在一些错误:

public void ShowActivity(Activity act)  // here you can't pass a Activity object as parameter, you should pass Class<?>, so it should be act.class
{
Intent intent = new Intent(this, act.class);
startActivity(intent);
}

如果不想使用util类,也可以在Activity类中定义showActivity()作为成员方法,推荐定义在BaseActivity中,这样就不用全部重复了 Activity 。

public void showActivity(Class<?> to, boolean finish) {
Intent intent = new Intent(this, to);
startActivity(intent);
if (finish) {
finish();
}
}

关于java - 开始 Activity 的动态 Intent 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36511985/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com