2015-08-03 4 views
1

У меня есть два фрагмента и один вид деятельности + Основная активностьпередачи данных между три деятельностью

  1. первого фрагмент где создается новая цель, которая вызывает на активность
  2. активности, которая вызывается выше упомянутого намерения. Я хочу передать данные здесь
  3. второго фрагмента, где я хочу, чтобы получить строки из TextViews и передать результаты деятельности упомянутой выше

так фрагмент, который имеет намерение не содержит информацию о том, Я хочу пройти, но есть еще один фрагмент, который не имеет намерения.

Единственное решение, которое я вижу, это включить 1-й фрагмент и код активности в MainActivity, но в этом случае мне нужно скопировать весь мой код.

Есть ли другое решение?

+0

Можете ли вы прояснить, где эти фрагменты точно –

+0

Может быть, я создаю внутренний класс во втором фрагменте и получаю доступ к его переменным в активности? –

+0

оба фрагмента находятся в MainActivity –

ответ

1

Дают тег обоих фрагментов Вы можете создать публичный метод во 2-й фрагмент, чтобы получить необходимый текст и в 1-м доступом фрагмент этот фрагмент как этот

Fragment frag2 = getFragmentMangegetFragmentManager().findFragmentByTag("Frag2"); 
if(frag2 != null){ 
text = frag2.getRequiredText(); 
} 
1

Создайте интерфейс в Fragment1, и этот интерфейс должен быть реализован по активности. он будет сообщаться между Fracment1 и активностью. И в реализации методы вы называете Fragment

private OnFragmentInteractionListener mListener; 

метод при Бютен нажатием

public void onButtonPressed() { 
    if (mListener != null) { 
     mListener.onFragmentInteraction(data); 
    } 
} 

интерфейса, который будет осуществлять деятельность по

public interface OnFragmentInteractionListener { 
    // TODO: Update argument type and name 
    public void onFragmentInteraction(String data); 
} 
1

Я надеюсь, что я понял вашу проблему.

public class Fragment1 extends Fragment 
{ 
    public Intent getIntent() 
    { 
    return neededIntent; 
    } 
} 


public class Fragment2 extends Fragment 
{ 
    public String getStringData() 
    { 
    return stringData; 
    } 
} 

public class MyActivity extends Activity 
{ 
    public void makeIntent() 
    { 
    Intent i = fragment1.getIntent(); 
    String data = fragment2.getStringData(); 
    } 
} 
1

Если вы просто хотите данные проходят от второго Fragment к этому отцу Activity вы можете сделать, как показано ниже:

//in 2nd Fragmnet you can call whenever you want: 
if(getActivity() != null && getActivity() instanceof FatherActivity){ 
    // You can create setYourData in your Father Activity. 
    ((FatherActivity)getActivity()).setYourData(yourData);   
}