簡體   English   中英

如何從片段中打開新的活動?

[英]How I can open a new Activity from a Fragment?

我正在經歷某種故障排除,我嘗試在這里尋找類似的答案,但沒有發現任何問題。

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方法之前,它會在我午餐時給我一個錯誤)。

您沒有在片段內的任何位置調用openMainPage(),因此不設置單擊偵聽器。 你應該在onViewCreated()做到這onViewCreated()

嘗試這個 :

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);

        }
    });
}
}

您需要從片段膨脹的視圖中查找rootview.findViewById(R.id.strandard) ,因此您應該將根視圖等同於膨脹視圖,然后使用rootview.findViewById(R.id.strandard)查找其中的視圖。

應該在return rootview之前調用openMainPage()否則它將無法訪問

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM