1

나는 단편을 주최하는 유일한 목적을 가진 활동이있다. Intent로이 작업을 시작한 다음 Intent의 정보를 사용하여 새 Activity에 추가하려는 Fragment에 args를 추가합니다.커밋 후 조각에서 사라 지나요?

여기는 SingleClickerActivity의 onCreate입니다 (이 활동은 의도에 의해 시작됩니다). 이 단계를 진행할 때 조각에 전달하려는 인수가 있는지 확인했습니다. Fragment has argument (this is right before the transaction step) 내가 조각을했습니다

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(getLayoutResId()); 

    UUID clickerId = (UUID) getIntent().getSerializableExtra(EXTRA_CLICKER_ID); 
    FragmentManager fm = getSupportFragmentManager(); 
    Fragment fragment = fm.findFragmentById(R.id.fragment_container); 

    if (fragment == null) { 
     fragment = createFragment(clickerId); 
     fm.beginTransaction() 
       .add(R.id.fragment_container, fragment) 
       .commit(); 
    } 
} 

, 그것은 인수 번들을 가지고 있으며, 나는 그것을 커밋합니다. 그러나, 나는 조각의에서 onCreate에 도착 :

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mClickerId = (UUID) getArguments().getSerializable(ARG_CLICKER_ID); 
    mClicker = ClickerBox.get(getActivity()).getClicker(mClickerId); 
} 

getArguments()는 null를 돌려줍니다. 번들이 터져 나왔다. 어디서 길을 잃은거야?

답변

0

해결!

onCreate 메서드는 슈퍼를 호출하여 인수가없는 다른 조각을 만들었습니다. 나는 args와 하나없는 두 조각을 얻고있었습니다. 비어있는 것은 활동에 첨부 된 것입니다. 나는 onCreateSingleClickerActivity에서 꺼내서 상속 된 버전을 사용하고 나서 줄을 옮겼습니다. UUID clickerId = (UUID) getIntent().getSerializableExtra(EXTRA_CLICKER_ID); into createFragment().