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
3 Réponses :
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); }
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' }
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;