Ich habe diese Methode verwendet, um die Größe von Markierungen in einer Google Maps-Aktivität zu ändern:
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;
}
Jetzt wollte ich es in einem Fragment mit MapView verwenden, aber ich bekomme die Fehlermeldung "Fehler: Symbolmethode getPackageName () kann nicht gefunden werden". Was könnte das Problem sein?
Versuchen Sie dies anstelle von getPackageName ().
getActivity().getPackageName()
getPackageName()
ist in Aktivität definiert. Sie können es nicht direkt in Ihrer Fragment
verwenden. Versuchen Sie es mit:
if(getActivity()!=null){
Bitmap imageBitmap = BitmapFactory.decodeResource(getResources(),getResources().getIdentifier(iconName, "drawable", getActivity().getPackageName()));
//rest of your code
}
Es wird empfohlen, zu überprüfen, ob getActivity null ist oder nicht. So stürzt Ihre App nicht ab.Lesen Sie diese SO Frage
Sie können auch eine statische Variable in Ihrer Hauptaktivität erstellen, die als Paketname instanziiert wird. Dann verwenden Sie einfach diese Variable in Fragment.
public static String PACKAGE_NAME;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
PACKAGE_NAME = getApplicationContext().getPackageName();
}
Jetzt können Sie darauf zugreifen mit:
MainActivity.PACKAGE_NAME
Hier erhalten Sie den Paketnamen für Kotlin in einem Fragment
context!!.packageName
BuildConfig.APPLICATION_ID
Der einfachste Weg ist wahrscheinlich:
String PkgName = BuildConfig.APPLICATION_ID
Anmerkungen:
BuildConfig
zugreifen.Eine andere Möglichkeit, PackageManager in Fragment
onCreateView () zu erhalten
view.getContext().getPackageName()