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 ()" .
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
Voici pour obtenir le nom du paquet pour Kotlin dans un fragment
context!!.packageName
BuildConfig.APPLICATION_ID
Le moyen le plus simple est probablement:
String PkgName = BuildConfig.APPLICATION_ID
Remarques:
BuildConfig
de n’importe où sur votre code.Une autre façon d’obtenir PackageManager dans Fragment
onCreateView ()
view.getContext().getPackageName()