액티비티의 데이터를 프래그먼트로 전달할 때, 프래그먼트에서 반환 된 값은 null입니다. 프래그먼트에서 2 토스트를 설정하여 myValue
의 값을 테스트하고 리턴 된 토스트가 myValue가 null 인 else 문에서 리턴 된 점을 참고하십시오.액티비티에서 프래그먼트로 데이터 전달 Null
활동 :
case R.id.forward:
Bundle bundle = new Bundle();
bundle.putString("message", "From Activity");
Fragment_02_Contacts mainFragment = new Fragment_02_Contacts();
mainFragment.setArguments(bundle);
getSupportFragmentManager().beginTransaction().add(android.R.id.content, mainFragment).commit();
break;
조각 :
String myValue;
.....
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (myValue != null)
{
myValue = this.getArguments().getString("message");
Toast.makeText(getActivity(), "message: "+myValue, Toast.LENGTH_SHORT).show();
return inflater.inflate(R.layout.fragment_02_contacts, container, false);
}
else
{
Toast.makeText(getActivity(), "message: "+myValue, Toast.LENGTH_SHORT).show();
// message is null ????
}
편집 :이 내 인수를 파괴합니까
getSupportFragmentManager().beginTransaction().add(android.R.id.content, mainFragment).commit();
하고 시작합니다 가 나는 이유가 연계 될 수 있음을 믿는다 새 단편?
내가 먼저 할당하면 응용 프로그램이 충돌합니다. java.lang.NullPointerException : null 객체 참조에서 가상 메소드 'java.lang.String android.os.Bundle.getString (java.lang.String)'을 호출하려고 시도합니다. , 응용 프로그램이 충돌을 피하기 위해 나는 if/else를 사용 했으므로 null 참조를 얻고 있기 때문에 내 응용 프로그램이 충돌합니다. – user3560827
이것은 인수가 올바르게 설정되지 않았다는 것을 의미합니다. 생성자에서 전달한 다음 거기에 설정할 수 있습니까? 또한 조각을 위해 정적 인 'newInstance'를 가진 팩토리 디자인 패턴을 사용하는 것이 좋습니다. – Vucko