当我尝试在 Android Java 中调用其他活动之外的活动时,我做错了什么?

What am i doing wrong when I try to call an activity outside an other activity in Android Java?

提问人:Alexander Stub Michelsen 提问时间:1/31/2023 更新时间:1/31/2023 访问量:41

问:

我想在创建我的 Android 应用程序时将我的所有方法放在单独的类中以清理我的代码,但我似乎可以做对。

在我的 MainActivity 类中,我从 importet 类 noteFunctionality onLongpress 和 OnDoubleTap 调用方法。

            @Override
            public void onLongPress(@NonNull MotionEvent e) {
                noteFunc.enterNote("2");
                super.onLongPress(e);
            }

            @Override
            public boolean onDoubleTap(@NonNull MotionEvent e) {
                noteFunc.enterNote(2);
                return super.onDoubleTap(e);
            }

然后在我的 NoteFunctionality 类中,我尝试使用特定活动的给定 int 启动一个新的活动类,“我有多个活动”。

    public void enterNote(int i) {
    Class mainActivity = Class.forName("MainActivity" + i);
    Intent secondActivityIntent = new Intent(this, mainActivity.class);
    startActivity(secondActivityIntent);
}

我做错了什么?

Java Android 方法 android-activity

评论

1赞 David Wasser 1/31/2023
会发生什么?您是否遇到编译或运行时错误?编辑您的问题并向我们展示您所看到的内容。
0赞 David Wasser 1/31/2023
我看到的第一个明显的事情是,在方法中调用构造函数时不能使用,因为是 的实例,您需要 here 的实例。thisIntententerNotethisNoteFunctionalityContext

答:

0赞 Seife 1/31/2023 #1
public void enterNote(Activity activity,Context context) {
    //Class mainActivity = Class.forName("MainActivity" + i);   
    Intent secondActivityIntent = new Intent(context, activity.getClass());
    startActivity(secondActivityIntent);
}

当你调用它时

noteFunc.enterNote(MainActivity,yourActivity.this);

评论

0赞 Alexander Stub Michelsen 1/31/2023
我根本无法让它工作。意图 secondActivityIntent = 新意图(上下文,活动.class);未知类说:“活动”。
0赞 Seife 1/31/2023
试试 activity.getClass()
0赞 Enowneb 1/31/2023 #2

如果要触发另一个 Activity,则必须通过 完成。Context

因此,您需要传递给您的函数才能完成您的任务。ContextNoteFunctionality

主活动

public class MainActivity extends Activity { // or extending any other form of Activity
    NoteFunctionality noteFunc; // I assume you have properly assign it somewhere

    @Override
    public void onLongPress(@NonNull MotionEvent e) {
        // You will have to pass also Context to enterNote function
        noteFunc.enterNote(MainActivity.this, "2"); // You should pass an Integer instead of String here
        super.onLongPress(e);
    }

    @Override
    public boolean onDoubleTap(@NonNull MotionEvent e) {
        noteFunc.enterNote(MainActivity.this, 2);
        return super.onDoubleTap(e);
    }
}

注意功能

public class NoteFunctionality {
    // You need to have Context here
    public void enterNote(Context context, int i) {
        Intent secondActivityIntent = new Intent(context, SecondActivity.class); // Replace your target Activity name with SecondActivity
        context.startActivity(secondActivityIntent);
    }
}