Передача данных между фрагментом и его контейнерной активностью - PullRequest
164 голосов
/ 18 февраля 2012

Как я могу передавать данные между фрагментом и его контейнерной активностью? Есть ли что-то похожее на передачу данных между действиями через намерения?

Я прочитал это, но это не сильно помогло:
http://developer.android.com/guide/topics/fundamentals/fragments.html#CommunicatingWithActivity

Ответы [ 13 ]

0 голосов
/ 05 декабря 2018
public class Fragmentdemo extends Fragment {

  public interface onDemoEventListener {
    public void demoEvent(String s);
  }

  onDemoEventListener demoEventListener;

  @Override
  public void onAttach(Activity activity) {
    super.onAttach(activity);
        try {
          demoEventListener = (onDemoEventListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString() + " must implement onDemoEventListener");
        }
  }

  final String LOG_TAG = "TAG";

  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragmentdemo, null);

    Button button = (Button) v.findViewById(R.id.button);
    button.setOnClickListener(new OnClickListener() {
      public void onClick(View v) {
        demoEventListener.someEvent("Test text to Fragment1");
      }
    });
    enter code here
    return v;
  }
}
0 голосов
/ 20 марта 2018

Это работает для меня ..

в Activity добавьте этот метод

    public void GetData(String data)
     {
        // do something with your data        
     }

и во Fragment добавьте эту строку

((YourActivity)getContext).GetData("your data here");
0 голосов
/ 28 июня 2013

Еще один простой способ получить данные, переданные из другого действия, во фрагменте в операции контейнера: например:

Activity_A => Activity_B (Fragment)

В вашем Activity_A вы создаете намерение, как будто вы отправляете данные (Строка здесь) другому действию:

Intent intent = new Intent(getBaseContext(),Activity_B.class);
intent.putExtra("NAME", "Value");
startActivity(intent);

в вашем Фрагменте, содержащемся в вашем Activity_B:

String data = getActivity().getIntent().getExtras();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...