繁体   English   中英

启动活动的动态意图参数

[英]Dynamic intent parameter for start 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();
}

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

作为Java noob,使用这种方法我是否认为过多的“ C#ish”?

提前致谢。

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

那么您可以在任何活动处调用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();
    }
}

您可以使用以下内容:

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

好的,我编辑了我的答案Ertürk。

showActivity Activity act参数的参数showActivity为Intent intent,然后将intent参数的值传递给方法的intent。

因此,要使用它,它将像:

showActivity(new Intent(this, LoginActivity.class));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM