この方法を使用して、Googleマップのアクティビティでマーカーのサイズを変更していました。
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;
}
MapViewでフラグメントで使用したかったのですが、「エラー:シンボルメソッドgetPackageName()が見つかりません」というエラーが表示されます。何が問題でしょうか?
GetPackageName()の代わりにこれを試してください
getActivity().getPackageName()
getPackageName()
アクティビティで定義されています。 Fragment
で直接使用することはできません。使用してみてください:
if(getActivity()!=null){
Bitmap imageBitmap = BitmapFactory.decodeResource(getResources(),getResources().getIdentifier(iconName, "drawable", getActivity().getPackageName()));
//rest of your code
}
GetActivityがnullかどうかを確認することをお勧めします。したがって、アプリはクラッシュしません。これを読んでください SOの質問
メインアクティビティで静的変数を作成し、パッケージ名としてインスタンス化することもできます。次に、その変数をフラグメントで使用します。
public static String PACKAGE_NAME;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
PACKAGE_NAME = getApplicationContext().getPackageName();
}
これで、次の方法でアクセスできます。
MainActivity.PACKAGE_NAME
これは、フラグメント内のKotlinのパッケージ名を取得するためのものです
context!!.packageName
BuildConfig.APPLICATION_ID
最も簡単な方法は、おそらく次のとおりです。
String PkgName = BuildConfig.APPLICATION_ID
ノート:
BuildConfig
にアクセスできます。Fragment
onCreateView()でPackageManagerを取得する別の方法
view.getContext().getPackageName()