1
votes

Erreur Shwing: tentative d'appel de la méthode virtuelle 'void androidx.appcompat.app.ActionBar.setDisplayHomeAsUpEnabled (boolean)

Je souhaite implémenter le bouton de retour d'Android ActionBar dans mon StreamActivity mais j'obtiens cette erreur:

<activity android:name=".StreamActivity"
            android:label="@string/stream"
            android:parentActivityName=".ClassActivity">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".ClassActivity" />
        </activity>

Je ne sais pas pourquoi cela ne fonctionne pas, même si j'ai suivi toutes les instructions de la documentation! de plus, j'ai fait exactement cela dans d'autres projets et cela fonctionne.

Voici mon code:

StreamActvivty.java

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"/>
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

public class StreamActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_stream);

        Toolbar toolbar = findViewById(R.id.toolbar);

        setSupportActionBar(toolbar);
        ActionBar actionBar= getSupportActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true); 

    }

}

    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.schoolteacher/com.example.schoolteacher.StreamActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.appcompat.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference


0 commentaires

3 Réponses :


1
votes

Essayez ceci

​​Ajoutez ceci dans onCreate

  <activity
        android:name=".activity.CreateAccountActivity"
        android:parentActivityName=".activity.LoginActivity" />

Ajoutez ceci en dehors de onCreate, ceci est utilisé pour revenir à l'activité parente

@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
   if (id == android.R.id.home) {
    NavUtils.navigateUpFromSameTask(this);
}
    return super.onOptionsItemSelected(item);
}

Et aussi définir l'activité des parents

 ActionBar actionBar = this.getSupportActionBar();
 if (actionBar != null) {
    actionBar.setDisplayHomeAsUpEnabled(true);
 }


0 commentaires

0
votes

Pour utiliser Toolbar comme ActionBar, assurez-vous d'abord que la bibliothèque de support AndroidX est ajoutée à votre application build.gradle (Module: app) file:

<resources>
  <!-- Base application theme. -->
  <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
  </style>
</resources>

Vous devez désactiver le thème fourni pour ActionBar . Changez votre thème de styles.xml comme suit:

dependencies {
   ...
   implementation 'androidx.appcompat:appcompat:1.0.0'
}


0 commentaires

0
votes

Y a-t-il une barre d'outils dans votre activity_stream.xml? Vérifiez également vos importations.

    import androidx.appcompat.app.ActionBar;
    import androidx.appcompat.widget.Toolbar;


0 commentaires