第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java類崩潰中的startActivity

java類崩潰中的startActivity

紅糖糍粑 2021-11-03 14:57:04
我正在為學(xué)校項目開發(fā) Android 應(yīng)用程序,但遇到以下問題。我有MainActivity一個Button和SecondActivity。當(dāng)我單擊 中的按鈕時,MainActivity它必須打開SecondActivity. 我在我的兩臺設(shè)備(三星 Galaxy s9+ 和華碩 zenfone2)上進(jìn)行了測試:主活動.javapublic class MainActivity extends AppCompatActivity {    Button button;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        button=(Button)findViewById(R.id.button);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Intent intent=new Intent(MainActivity.this,SecondActivity.class)                startActivity(intent);            }        });}}這在兩種設(shè)備上都可以正常工作,當(dāng)我單擊按鈕時,它會正確打開 SecondActivity。問題是當(dāng)我添加一個控制器類并嘗試在其中啟動SecondActivity時。這是控制器類:控制器.javapublic class Controller {    public void open(Context cont){        Intent intent=new Intent(cont,SecondActivity.class);        cont.getApplicationContext().startActivity(intent);     }  }我改變了MainActivity這種方式:public class MainActivity extends AppCompatActivity {    Button button;    Controller c;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        button=(Button)findViewById(R.id.button2);        c=new Controller();        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                c.open(getApplicationContext());            }        });}}這在我的 s9+ 上運行良好,而在我的 zenfone2 上單擊按鈕時崩潰。問題出在哪兒?如果不正確,為什么在 s9+ 上有效?
查看完整描述

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);

}


查看完整回答
反對 回復(fù) 2021-11-03
?
桃花長相依

TA貢獻(xiàn)1860條經(jīng)驗 獲得超8個贊

getApplicationContext()在 open 函數(shù)中從 Controller 類中刪除。做了cont.startActivity(intent);


查看完整回答
反對 回復(fù) 2021-11-03
?
慕虎7371278

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);

     }

  }


查看完整回答
反對 回復(fù) 2021-11-03
  • 3 回答
  • 0 關(guān)注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號