Java 如何在片段中使用方法?
我正在尝试编写一个片段,它有一个在TextView中设置内容的方法。我有以下片段: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
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");
}