如何从片段中打开新的活动?

时间:2019-04-12 23:35:45

标签: java android

我正在进行某种故障排除,我尝试在此处查找类似的答案,但未找到任何答案。

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方法之前,则在午餐项目时会给我一个错误)。

2 个答案:

答案 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之前调用,否则将无法访问