Java 如何在片段中使用方法?

Java 如何在片段中使用方法?,java,android,xml,android-fragments,Java,Android,Xml,Android Fragments,我正在尝试编写一个片段,它有一个在TextView中设置内容的方法。我有以下片段: public class DetailFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout

我正在尝试编写一个片段,它有一个在TextView中设置内容的方法。我有以下片段:

public class DetailFragment extends Fragment {
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.my_fragment, container, false);
//    setText("set it to something");
    return view;
  }

  public void setText(String item) {
    TextView view = (TextView) getView().findViewById(R.id.detailsText);
    view.setText(item);
  }
}
这个很好用。它显示文本视图。现在我想通过编程方式编辑文本视图中的文本。我想我应该先从片段中编辑它开始。所以我有一个方法,应该可以做到这一点。当我现在取消注释
setText(“将其设置为某物”)它给了我一个
膨胀异常:膨胀类片段时出错。
我不知道为什么

有人知道我如何解决这个问题吗?

这样做吧

class ... extends Fragment{
   private TextView _myTextView;

   onCreateView(...){
       //inflate view

       _myTextView = (TextView)view.findViewById(R.id.text_view);
       editText("blablabla");
   }


   private void editText(String text){
       _myTextView.setText(text);
   }
}

Ypu必须初始化onCreateView中的所有UI元素,以便从正在充气的视图充气

如果要在
onCreateView()中执行此操作,请按如下方式执行:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
             Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.my_fragment, container, false);
    TextView tv= (TextView) view.findViewById(R.id.detailsText);
    tv.setText("set it to something");
    return view;
}

原因是在返回
onCreateView()
之前不能调用
getView()

onViewCreated()执行操作


在中调用您的方法onResume@Waqas-谢谢你。真的很有魅力!其他人也建议在onCreateView中使用其他方法。哪种方法是最好/正确的方法;在onCreateView或onResume中?在
onResume()
中执行此操作将导致每次暂停和恢复片段时调用此方法,这是不好的,因为有时片段只是暂停和恢复(当显示对话框时),在这种情况下,无任何理由再次设置文本不是一个好主意。我建议您将此调用移动到
onViewCreated()
onActivityCreated()
@M-WaJeEh我知道我的建议是一个快速、肮脏的解决方案。从技术上讲,它应该在活动中调用,并附加:)好的,谢谢!Waqas也在简历中提出了这样做的建议。从您建议的onCreateView或onResume方法中,最好/正确的方法是什么;我希望有一个专门的方法来更改此文本的原因是,我实际上希望能够从活动中调用它。你知道怎么做吗?那么你应该从
onViewCreated()
调用它,或者从
onActivityCreated()
调用它。在
onResume()
中执行此操作将导致每次暂停和恢复片段时都调用此方法,这是不好的,因为有时片段只是暂停和恢复(当显示对话框时)。在这种情况下,没有任何理由再次设置文本不是一个好主意。我尝试创建onViewCreated()和onActivityCreated()在我的片段中,但它抱怨这些不是片段的超类型方法。有没有关于如何执行此操作的想法/示例?如果您正在使用eclipse,则只需将
onView
写入要插入方法的位置,按ctrl+space并从选项中选择方法。同样的情况也适用于ActivityCreated()
public void onViewCreated (View view, Bundle savedInstanceState){
    TextView tv = (TextView) view.findViewById(R.id.detailsText);
    tv.setText("set it to something");
    // following will work too here
    // setText("set it to something");
}