首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android Fragment + ViewPager 中按鈕跳轉到新 Activity 的正確姿勢

     編輯:程式設計綜合問答

問題現象

在 ViewPager 的 Fragment 頁面中點擊按鈕想跳轉到新頁面,但跳轉失效。

原因分析

  • 若在 Fragment 中直接 startActivity(intent),需確保 getActivity() 不為 null(Fragment 已附加到 Activity)。
  • 若使用 viewPager.setCurrentItem() 只能在同一 Activity 內切換 Fragment,無法啟動新 Activity。

正確代碼

// 在 Fragment 內部
Button btn = view.findViewById(R.id.btn_jump);
btn.setOnClickListener(v -> {
    Intent intent = new Intent(requireActivity(), TargetActivity.class);
    startActivity(intent);
    // 可選:添加過場動畫
    requireActivity().overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
});

關鍵點

  1. 使用 requireActivity()(API 23+)或 getActivity() 獲取宿主 Activity 上下文。
  2. 確保 TargetActivity 已在 AndroidManifest.xml 註冊。
  3. 若在 Adapter 中設置點擊,需將 Context 傳遞給 Adapter 或使用接口回調。

替代方案:單 Activity + Navigation Component

現代 Android 開發推薦單 Activity 架構,配合 Jetpack Navigation 在 Fragment 間導航,而非啟動新 Activity。若確需新 Activity(如第三方 SDK、系統選擇器),上述方式即可。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved