web-dev-qa-db-fra.com

getPackageName () dans le fragment

J'utilisais cette méthode pour redimensionner les marqueurs dans une activité Google Maps:

public Bitmap resizeMapIcons(String iconName,int width, int height){
    Bitmap imageBitmap = BitmapFactory.decodeResource(getResources(),getResources().getIdentifier(iconName, "drawable", getPackageName()));
    Bitmap resizedBitmap = Bitmap.createScaledBitmap(imageBitmap, width, height, false);
    return resizedBitmap;
}

Maintenant, je voulais l'utiliser dans un fragment avec MapView, mais l'erreur "erreur: impossible de trouver la méthode de symbole getPackageName ()" .

6
Tamas Koos
getPackageName()

est défini dans l'activité. vous ne pouvez pas l'utiliser directement dans votre Fragment. Essayez d'utiliser:

    if(getActivity()!=null){
         Bitmap imageBitmap = BitmapFactory.decodeResource(getResources(),getResources().getIdentifier(iconName, "drawable", getActivity().getPackageName()));
         //rest of your code
   }

Il est recommandé de vérifier si getActivity est null ou non. Donc, votre application ne plantera pas. Lisez cette SO question

Vous pouvez également créer une variable statique dans votre activité principale, instanciée pour correspondre au nom du package. Ensuite, utilisez simplement cette variable dans le fragment.

    public static String PACKAGE_NAME;

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    PACKAGE_NAME = getApplicationContext().getPackageName();
}

Maintenant, vous pouvez y accéder en utilisant:

MainActivity.PACKAGE_NAME
3
rafsanahmad007

Voici pour obtenir le nom du paquet pour Kotlin dans un fragment

context!!.packageName

1
Ade

BuildConfig.APPLICATION_ID


Le moyen le plus simple est probablement:

String PkgName = BuildConfig.APPLICATION_ID

Remarques:

  • Vous pouvez accéder à BuildConfig de n’importe où sur votre code.
  • Ne fonctionne pas sur les bibliothèques
0
Pedro Lobito

Une autre façon d’obtenir PackageManager dans Fragment onCreateView ()

view.getContext().getPackageName()
0
Shubham Srivastava