Intent intent = new Intent(getActivity(), FragmentTarget.class); // 錯誤!
startActivity(intent);
錯誤訊息:FragmentTarget cannot be cast to Activity。
Intent 只能啟動 Activity、Service、BroadcastReceiver。Fragment 不是獨立組件,必須依附於 Activity,無法直接用 Intent 啟動。
TargetActivity,在 onCreate 中載入 FragmentTarget。Intent intent = new Intent(getActivity(), TargetActivity.class);// 在 FragmentRecord 中
FragmentTarget targetFragment = new FragmentTarget();
// 可透過 Bundle 傳參
Bundle args = new Bundle();
args.putString("key", "value");
targetFragment.setArguments(args);
getFragmentManager().beginTransaction()
.replace(R.id.fragment_container, targetFragment) // 容器 ID
.addToBackStack(null) // 可選:支援返回鍵回上一 Fragment
.commit();
R.id.fragment_container 是主 Activity 布局中的 FrameLayout 或 FragmentContainerView。
Fragment 不能用 Intent 跳轉。單 Activity 多 Fragment 架構下,請用 FragmentManager + FragmentTransaction 進行 replace/add,並善用 Back Stack 處理返回邏輯。