2
votes

obtenir actionBar à l'intérieur d'un fragment en utilisant androidx

Je veux juste obtenir actionBar dans un fragment avec une fonction et j'utilise le langage Kotlin et AndroidX.

voici mon code:

import androidx.appcompat.app.ActionBar
import androidx.fragment.app.Fragment

class TestFragment : Fragment() {

    fun getActiobar() : ActionBar
    {
        return  activity.actionBar
    }
}

mais je suis obtenir cette erreur:

Non-concordance de type: le type inféré est android.app.ActionBar! mais androidx.appcompat.app.ActionBar était attendu.

une aide?


0 commentaires

3 Réponses :


0
votes

Vous définissez probablement dans votre vue XML une actionBar qui n'est pas AndroidX.

L'erreur traduite signifie que dans cette fonction, vous souhaitez renvoyer un objet androidx.appcompat.action.ActionBar mais activity.actionBar est un android. app.ActionBar! . Vous devez en tenir compte et le modifier dans les styles correspondants.

J'espère que vous le trouverez utile.


0 commentaires

2
votes

La propriété activity de androidx.fragment.app.Fragment vous donne la androidx.fragment.app.FragmentActivity "ce fragment est actuellement associé à "(cité dans la documentation disponible dans Android Studio)

La propriété actionBar de FragmentActivity vous donnera en revanche un android.app. ActionBar qui n'est pas compatible avec l'ancien android.support.v7.app.ActionBar ou son équivalent AndroidX androidx.appcompat.app.ActionBar

Étant donné que FragmentActivity n'a pas de propriété supportActionBar , vous devrez convertir le FragmentActivity en androidx.appcompat.app .AppCompatActivity :

import androidx.appcompat.app.ActionBar
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment

class TestFragment: Fragment() {

    fun getActionbar() : ActionBar?
    {
        return (activity as AppCompatActivity).supportActionBar
    }
}

Remarque: j'ai ajouté le "?" car supportActionBar peut être null


0 commentaires

0
votes

Assurez-vous d'abord d'importer androidx import androidx.appcompat.app.ActionBar;

initial private ActionBar actionBar;

Ensuite, ajoutez ceci dans le protected void onCreate calss

    actionBar = getSupportActionBar();
    actionBar.setTitle("Your Tittle");

C'est tout.


0 commentaires