提问人:Alexander Stub Michelsen 提问时间:1/31/2023 更新时间:1/31/2023 访问量:41
当我尝试在 Android Java 中调用其他活动之外的活动时,我做错了什么?
What am i doing wrong when I try to call an activity outside an other activity in Android Java?
问:
我想在创建我的 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);
}
我做错了什么?
答:
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
因此,您需要传递给您的函数才能完成您的任务。Context
NoteFunctionality
主活动:
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);
}
}
评论
this
Intent
enterNote
this
NoteFunctionality
Context