C'est mon activité, pas de mise en page

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
protected void onStart() {
    super.onStart();
}

@Override
protected void onResume() {
    super.onResume();
    if (getIntent().getAction().equals(NfcAdapter.ACTION_NDEF_DISCOVERED)) {
        Parcelable[] rawMsgs = getIntent().getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
        if (rawMsgs != null) {
            NdefMessage[] msgs = new NdefMessage[rawMsgs.length];
            for (int i = 0; i < rawMsgs.length; i++) {
                msgs[i] = (NdefMessage) rawMsgs[i];
            }
            runNFCTagData(msgs[0].getRecords()[0].getPayload());
            startActivity(new Intent(this, AlarmList.class));
        } else {
            Toast.makeText(this, getResources().getString(R.string.nfc_ndef_not_found), Toast.LENGTH_LONG).show();
        }
    }
}  

Exécutez-le sur Android 6.0+ et il sera cassé, vous pouvez voir Unable to resume activity, n'a pas appelé finish() avant onResume() terminer ', mais 6.0- est OK. cela a fonctionné, mais je ne sais pas pourquoi?

Ceci est ma solution
  @Override protected void onStart() { super.onStart(); setVisible(true); }

0
sunpeijie 17 janv. 2017 à 04:44

2 réponses

Meilleure réponse

Ceci est obligatoire lorsque vous utilisez Theme.NoActivity conformément à ce post Google+ comme documenté:

Thème par défaut pour les activités qui n'affichent pas réellement une interface utilisateur; en d'autres termes, ils se terminent avant d'être repris.

Selon ce billet de blog , ce comportement est nouveau pour Android 6.0.

4
ianhanniballake 17 janv. 2017 à 01:53

Vous utilisez API> 21, vous pouvez donc utiliser le style suivant sur votre activité:

Theme.Translucent.NoTitleBar

L'astuce avec "setVisible (true)" n'est toujours pas nécessaire.

0
tryp 7 juin 2017 à 15:04