3 回答

TA貢獻(xiàn)1811條經(jīng)驗 獲得超4個贊
從 Android P 開始,除非您添加 Intent.FLAG_ACTIVITY_NEW_TASK 標(biāo)志,否則您無法使用應(yīng)用程序上下文啟動活動。因此,只需更改您的控制器和 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貢獻(xiàn)1860條經(jīng)驗 獲得超8個贊
getApplicationContext()
在 open 函數(shù)中從 Controller 類中刪除。做了cont.startActivity(intent);

TA貢獻(xiàn)1802條經(jīng)驗 獲得超4個贊
你不能調(diào)用startActivity從getApplicationContext了,你不需要調(diào)用它這么多次。
getApplicationContext用“這個”代替。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
c.open(MainActivity.class);
}
});
然后只需調(diào)用 startActivity
public class Controller {
public void open(Context cont){
Intent intent=new Intent(cont,SecondActivity.class);
cont.startActivity(intent);
}
}
添加回答
舉報