Почему мои данные отображаются как null при попытке передать их из моей активности во фрагмент?

#java #android #android-fragments

#java #Android #android-фрагменты

Вопрос:

Я пытаюсь передать информацию из моей деятельности в мой фрагмент, но у меня возникают некоторые проблемы. Я выполнил шаги, указанные в stackoverflow из сообщения предыдущего пользователя. Но мои данные не отображаются. Может кто-нибудь сказать мне, почему у меня возникла эта проблема?

Это код внутри моей активности

   PennyStocksFragment fragment = new PennyStocksFragment();
  Bundle bundle = new Bundle();
  bundle.putString("SELECTEDSTRINGSECTOR", "something"); // Put anything what you want
  fragment.setArguments(bundle);
  FragmentManager fm = ((FilterActivity.this).getSupportFragmentManager());
  FragmentTransaction ft = fm.beginTransaction();
  ft.replace(R.id.fragment_container, fragment);
  ft.commit();
 

Вот как я пытаюсь извлечь их из своего фрагмента

 String data = this.getArguments().getString("SELECTEDSTRINGSECTOR");
Log.i("tickerSymbolVar",data);
 

Комментарии:

1. В какой момент фрагмента вы пытаетесь получить доступ к аргументам?

2. Я поместил его в свой onCreateView моего фрагмента

3. Можете ли вы вставить свое представление Logcat, в котором вы проверяете данные?

Ответ №1:

Этот метод будет работать , когда он у вас есть Activity . Я думаю, вы получаете данные из другого фрагмента активности? Если я прав, то сначала перейдите к этому действию и в activity передайте данные во фрагмент, а затем получите его здесь

Комментарии:

1. У меня есть одно действие, я пытаюсь отправить данные из этого действия во фрагмент

Ответ №2:

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

 PennyStocksFragment fragment = new PennyStocksFragment("your data");
bundle.putString("SELECTEDSTRINGSECTOR", "something"); 

FragmentManager fm = ((FilterActivity.this).getSupportFragmentManager());
FragmentTransaction ft = fm.beginTransaction();
  ft.replace(R.id.fragment_container, fragment);
  ft.commit();
 

и получить к нему доступ в конструкторе фрагмента:

 public PennyStocksFragment(String s){
String data = s;
}