我使用此方法调整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()”。 可能是什么问题?
答案 0 :(得分:20)
尝试使用此代替getPackageName()
getActivity().getPackageName()
答案 1 :(得分:3)
getPackageName()
在Activity中定义。您无法在Fragment
中直接使用它。尝试使用:
if(getActivity()!=null){
Bitmap imageBitmap = BitmapFactory.decodeResource(getResources(),getResources().getIdentifier(iconName, "drawable", getActivity().getPackageName()));
//rest of your code
}
最佳做法是检查getActivity是否为null。所以你的应用程序不会崩溃。请阅读SO question
您还可以在主活动中创建静态变量,将其实例化为包名称。然后在片段中使用该变量。
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
答案 2 :(得分:1)
这里是在片段中获取Kotlin的程序包名称
context!!.packageName
答案 3 :(得分:0)
在Fragment
onCreateView()
view.getContext().getPackageName()
答案 4 :(得分:0)
BuildConfig.APPLICATION_ID
最简单的方法可能是:
String PkgName = BuildConfig.APPLICATION_ID
注意:
BuildConfig
。答案 5 :(得分:0)
将此添加到您的代码中的某个位置:
mask = df['E'].groupby(df['D'].eq(-1).cumsum()).transform('any')
df.loc[mask, 'E'] = df.loc[mask, 'E'].fillna(0)
然后直接在您的片段代码中直接使用packageName
val Fragment.packageName get() = activity?.packageName