我的mainactivity中有两个片段,从第一个开始,用户点击一个按钮并通过我的监听器向第二个片段发送一个char,取决于该char,第二个片段中的textview必须打印一个文本。但在我的方法onActivityCreated中,我的textview始终为null。
这是我的代码: FragmentOne
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
btnChefcito = (Button)getView().findViewById(R.id.btnChefcito);
btnChefcita = (Button)getView().findViewById(R.id.btnChefcita);
btnChefcito.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
welcomeListener.elegirSexo(sexo);
replaceFragment();
}
});
btnChefcita.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sexo="f";
welcomeListener.elegirSexo(sexo);
replaceFragment();
}
});
}
这是我的第二个片段
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
tviBienvenida = (TextView)getView().findViewById(R.id.tviBienvenida);
}
public void getSex(String sex){
if(sex.equals("m")){
tviBienvenida.setText(bienvenido);
}else if(sex.equals("f")){
tviBienvenida.setText(bienvenida);
}
}
答案 0 :(得分:0)
而不是onActivityCreated
中的onCreateView
执行此操作:
private static View viewHolder;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
viewHolder = inflater.inflate(R.layout.YourFragmentLayout, container, false);
btnChefcito = (Button) viewHolder.findViewById(R.id.YourButtonId);
btnChefcito.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
welcomeListener.elegirSexo(sexo);
replaceFragment();
}
});
return viewHolder;
}
答案 1 :(得分:0)
在Android上,您必须声明一个全局变量。 你们班级中的tviBienvenida,以及创建视图
tviBienvenida = (TextView)getView().findViewById(R.id.tviBienvenida);
变量tviBienvenida将始终具有该值,并且tviBienvenida中的任何更改也将被视为您的textview。
答案 2 :(得分:0)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.your_fragment_id, null, false);
btnChefcito = (Button)view.findViewById(R.id.btnChefcito);
btnChefcita = (Button)view.findViewById(R.id.btnChefcita);
btnChefcito.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
welcomeListener.elegirSexo(sexo);
replaceFragment();
}
});
btnChefcita.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sexo="f";
welcomeListener.elegirSexo(sexo);
replaceFragment();
}
});
return view;
}
问题是public void onActivityCreated(Bundle savedInstanceState)
没有在片段中创建任何视图,所以替换此方法中的所有代码
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
抱歉我的英语。
答案 3 :(得分:0)
在onCreateView方法中实现视图并在那里补充您的内容,例如:
@Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.your_layout, container, false); TextView textView = view.findViewById(R.id.yourTextView); //your code return view; }