[英]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.