在Fragment中使用font

时间:2014-03-09 09:58:09

标签: android

我倾向于使用字体片段和片段控制 为什么以下代码会产生错误?

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rooo = inflater.inflate(R.layout.din2, container, false);
        TextView tv1=(TextView) rooo.findViewById(R.id.tv1);
        Typeface yaghut=Typeface.createFromAsset(getActivity().getAssets(), "font/BKOODB.ttf");
        tv1.setTypeface(yaghut);
        return rooo;
    }

    }

这个错误 enter image description here

3 个答案:

答案 0 :(得分:3)

onCreateView仅应返回表示片段的视图。 View上的其他操作应该在另一个回调onViewCreated

中执行
    @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {       
      return inflater.inflate(R.layout.din2, container, false);
 }

 @Override 
 public void onViewCreated (View view, Bundle savedInstanceState) {
        TextView tv1=(TextView) view.findViewById(R.id.tv1);
        Typeface yaghut=Typeface.createFromAsset(getActivity().getAssets(), "font/BKOODB.ttf");
        tv1.setTypeface(yaghut);
 }

答案 1 :(得分:1)

你需要改变:

TextView tv1=(TextView) r.findViewById(R.id.tv1);

 TextView tv1=(TextView) rooo.findViewById(R.id.tv1);

因为TextView tv1个ID必须位于din2布局上。

答案 2 :(得分:0)

您正在创建一个名为rooo的视图,但您要返回一个名为roo的视图...现在将所有roo替换为rooo,如下所示......

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rooo = inflater.inflate(R.layout.din2, container, false);
    TextView tv1=(TextView) rooo.findViewById(R.id.tv1);
    Typeface yaghut=Typeface.createFromAsset(getActivity().getAssets(), "font/BKOODB.ttf");
    tv1.setTypeface(yaghut);
    return rooo;
}

}