我正在进行某种故障排除,我尝试在此处查找类似的答案,但未找到任何答案。
public class TicketFragment extends Fragment {
public Button strandard;
public Button premium;
public Button vip;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_ticket, container, false);
}
public void openMainPage(){
strandard = (Button)getView().findViewById(R.id.strandard);
strandard.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), Payment.class);
startActivity(intent);
}
});
}
}
如何调用此方法?由于这是一个片段,因此,如果仅将其放在onCreateView
方法中,则它表示该语句不可访问(如果将其放在return方法之前,则在午餐项目时会给我一个错误)。
答案 0 :(得分:0)
您不会在片段内的任何地方调用openMainPage(),因此不会设置单击侦听器。您应该在onViewCreated()
中进行此操作。
答案 1 :(得分:0)
尝试一下:
public class TicketFragment extends Fragment {
public Button strandard;
public Button premium;
public Button vip;
public View rootview;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
rootview = inflater.inflate(R.layout.fragment_ticket, container, false);
openMainPage();
return rootview;
}
public void openMainPage(){
strandard = (Button)rootview.findViewById(R.id.strandard);
strandard.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), Payment.class);
startActivity(intent);
}
});
}
}
您需要从由片段放大的视图中查找ViewById(),因此,您应将根视图等同于膨胀的视图,然后使用rootview.findViewById(R.id.strandard)
在其中查找视图。
openMainPage()
应该在return rootview
之前调用,否则将无法访问