ErT*_*rTR 1 java android android-intent android-activity
我想创建一种启动活动的方法。我不想每次都这样写:
Intent intent = new Intent(this, LoginActivity.class);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
相反,我想像这样使用它:(使用 1 行而不是 2 行)
ShowActivity(LoginActivity);
Run Code Online (Sandbox Code Playgroud)
通过使用这样的自定义方法:
public void ShowActivity(Activity act)
{
Intent intent = new Intent(this, act.class);
startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
并且可能进一步超载:
public void ShowActivity(Activity act, boolean finish)
{
Intent intent = new Intent(this, act.class);
startActivity(intent);
if(finish)
CurrentActivity.this.finish();
}
Run Code Online (Sandbox Code Playgroud)
不管怎样,它给出了找不到符号错误(我不知道为什么它是cannot而不是cannot顺便说一下)。是否可以这样做,如果可以,这样做合理吗?(最后一个)如果是,为什么不嵌入 1 行方法来执行此操作?
作为一个 Java 菜鸟,我是否认为这种方法过于“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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
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);
}
Run Code Online (Sandbox Code Playgroud)
如果你不想使用util类,你也可以showActivity()在你的Activity类中定义它作为成员方法,建议在BaseActivity中定义它,这样你就不需要在所有Activity中重复它。
public void showActivity(Class<?> to, boolean finish) {
Intent intent = new Intent(this, to);
startActivity(intent);
if (finish) {
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1955 次 |
| 最近记录: |