访问 Fragment 中的资产
Access assets in Fragment
我的资产文件夹中有一个字体,我在我的片段中这样称呼它:
Typeface custom_font = Typeface.createFromAsset(getActivity().getAssets(), "fonts/myFont.otf");
但是我收到一个 lint 警告说 getAssets()
可能 return 为空。
我做了一些研究,发现 this question/answer。我目前已经获得了活动上下文。
我想做的是在我的 Activity
中添加以下方法:
public static Typeface getMyFont(Activity context){
return Typeface.createFromAsset(context.getAssets(), "fonts/myFont.otf");
}
然后像这样从我的片段中调用它:
mTextView.setTypeface(Activity.getMyFont(getActivity()));
通过执行上述操作,我没有收到任何警告,但我不确定这是否是正确的方法,所以..
我的问题是:
我应该忽略棉绒警告吗?我应该像上面那样做还是有正确的方法?
But I got a lint warning saying that getAssets() may return null.
in Fragments
getActivity()
可以 return null
如果片段当前没有附加到父 activity,
解决方案 1: 检查您的 activity 是否不为 null
if(getActivity()!=null){
Typeface custom_font = Typeface.createFromAsset(getActivity().getAssets(), "fonts/myFont.otf");
}
解决方案 2: 您可以使用 onAttach()
获取上下文
public class BlankFragment extends Fragment {
private Context mContext;
@Override
public void onAttach(Context context) {
super.onAttach(context);
mContext=context;
}
public BlankFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Typeface custom_font = Typeface.createFromAsset(mContext.getAssets(), "fonts/myFont.otf");
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_blank, container, false);
}
}
我认为你应该使用下面的代码:
Typeface myFont = Typeface.createFromAsset(getActivity().getAssets(), "myFont.ttf");
mTextView.setTypeface(myFont)
它运行成功。
我的资产文件夹中有一个字体,我在我的片段中这样称呼它:
Typeface custom_font = Typeface.createFromAsset(getActivity().getAssets(), "fonts/myFont.otf");
但是我收到一个 lint 警告说 getAssets()
可能 return 为空。
我做了一些研究,发现 this question/answer。我目前已经获得了活动上下文。
我想做的是在我的 Activity
中添加以下方法:
public static Typeface getMyFont(Activity context){
return Typeface.createFromAsset(context.getAssets(), "fonts/myFont.otf");
}
然后像这样从我的片段中调用它:
mTextView.setTypeface(Activity.getMyFont(getActivity()));
通过执行上述操作,我没有收到任何警告,但我不确定这是否是正确的方法,所以..
我的问题是:
我应该忽略棉绒警告吗?我应该像上面那样做还是有正确的方法?
But I got a lint warning saying that getAssets() may return null.
in Fragments
getActivity()
可以 return null
如果片段当前没有附加到父 activity,
解决方案 1: 检查您的 activity 是否不为 null
if(getActivity()!=null){
Typeface custom_font = Typeface.createFromAsset(getActivity().getAssets(), "fonts/myFont.otf");
}
解决方案 2: 您可以使用 onAttach()
获取上下文
public class BlankFragment extends Fragment {
private Context mContext;
@Override
public void onAttach(Context context) {
super.onAttach(context);
mContext=context;
}
public BlankFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Typeface custom_font = Typeface.createFromAsset(mContext.getAssets(), "fonts/myFont.otf");
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_blank, container, false);
}
}
我认为你应该使用下面的代码:
Typeface myFont = Typeface.createFromAsset(getActivity().getAssets(), "myFont.ttf");
mTextView.setTypeface(myFont)
它运行成功。