有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

启动活动的java动态意图参数

我想创建一个开始活动的方法。我不想每次都这样写:

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();
}

无论如何,它给出了找不到符号的错误(顺便说一句,我不知道为什么它是找不到而不是找不到)。有可能这样做吗?如果有,这样做是否合理?(最后一个)如果是,为什么不嵌入一行方法来实现这一点

我是否认为这种方法太“C#ish”了,因为它是Java noob

提前谢谢

另外,我是一个Java和Android的noob,所以我甚至不确定问题的标题。我不知道如何问得更好,因此我无法正确搜索这个问题是否重复。如果是这样,道歉


共 (1) 个答案

  1. # 1 楼答案

    定义一个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();
            }
        }
    }
    

    然后你可以在任何活动中调用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类,还可以将活动类中的showActivity()定义为成员方法,建议在BaseActivity中定义它,这样就不需要在所有活动中重复它

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