[英]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.