3 回答
TA贡献1811条经验 获得超4个赞
从 Android P 开始,除非您添加 Intent.FLAG_ACTIVITY_NEW_TASK 标志,否则您无法使用应用程序上下文启动活动。因此,只需更改您的控制器和 mainactivity 以使用 mainactivity 上下文。
c.open(MainActivity.this);
public void open(Context context) {
Intent intent = new Intent(context, SecondActivity.class);
context.startActivity(intent);
}
或者
public void open(Context context) {
Intent intent = new Intent(context.getApplicationContext(), SecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
TA贡献1860条经验 获得超8个赞
getApplicationContext()
在 open 函数中从 Controller 类中删除。做了cont.startActivity(intent);
TA贡献1802条经验 获得超4个赞
你不能调用startActivity从getApplicationContext了,你不需要调用它这么多次。
getApplicationContext用“这个”代替。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
c.open(MainActivity.class);
}
});
然后只需调用 startActivity
public class Controller {
public void open(Context cont){
Intent intent=new Intent(cont,SecondActivity.class);
cont.startActivity(intent);
}
}
添加回答
举报