#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;
}