2015-07-31 1 views
0

Я новичок в использовании фрагментов. Это, как я передаю StringArrayList внутри пучка в onActivityCreated первого фрагмента в скользящем ВкладкаИспользование пучка для передачи сообщений в скользящих вкладках возвращает нуль

public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    next_personal = (Button) getActivity().findViewById(R.id.personal_next); 


    next_personal.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 

      validate(); 
     } 
    }); 
} 

private void validate() { 

    isValid = FormValidator.validate(this, new SimpleErrorPopupCallback(getActivity().getApplicationContext(), true)); 

    if (isValid) { 
     arrayList = new ArrayList<String>(); 
     arrayList.add(memID.getText().toString()); 
     arrayList.add(idNumber.getText().toString()); 
     arrayList.add(firstName.getText().toString()); 
     arrayList.add(secondName.getText().toString()); 
     arrayList.add(lastName.getText().toString()); 
     arrayList.add(secondLastName.getText().toString()); 

     Bundle bundle = new Bundle(); 
     bundle.putStringArrayList("personal",arrayList); 
     Log.d("bundle",": "+bundle.toString()); 
     FragContactInfo frag = new FragContactInfo(); 
     frag.setArguments(bundle); 

     ((RegisterTabActivity) getActivity()).setCurrentItem(1, true); 
    } 
} 

И тогда я пытаюсь получить ArrayList в третьем фрагменте вкладки скольжения, как показано ниже:

@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    Bundle bundle = getArguments(); 

    if (bundle != null && bundle.containsKey("personal")) { 
     ArrayList<String> userId = bundle.getStringArrayList("personal"); 
    } 
    else{ 
     Toast.makeText(getActivity(),"Bundle is null",Toast.LENGTH_SHORT).show(); 
    } 
} 

Он продолжает возвращать null. Делал то же самое внутри onCreateView обоих фрагментов, тот же результат. Что я здесь не так?

+0

Вы используете одно и то же действие для всех своих фрагментов? и где вы добавляете уловки в свою деятельность? я думаю, вы не используете один и тот же экземпляр фрагмента. Отправьте код активности. – Rami

+0

Я разрешил его, создав собственный метод в целевом фрагменте, который принимает arraylist и вызывается методом из фрагмента отправки сообщения. Фрагменты для скользящей вкладки. Итак, да, такая же родительская активность для всех фрагментов вкладки. Спасибо, что ответили :) – SagePawan

ответ

0

Использование узелка не помогли в данном разборе между фрагментами (так или иначе)

Так что я просто создал метод для установки и получения данных в целевом фрагменте.

public void setPdata(JSONObject obj) { 
    this.personalJSON = obj; 
} 

public JSONObject getPdata() { 
    return personalJSON; 
} 

Тогда я назвал метод set, чтобы установить json в фрагменте отправителя.

FragContactInfo frag = new FragContactInfo(); 
     frag.setPdata(json); 

И затем доступ к json путем простого вызова метода get.

array1 = getPdata().getJSONArray("args"); 

Если у кого-то более продуктивное решение, пожалуйста, расскажите. Счастливое кодирование.

Смежные вопросы