Передаю данные из операции в фрагмент, в фрагменте возвращаемое значение равно null. Обратите внимание, что у меня есть 2 тоста из Фрагмента для проверки значения myValue
, а тост возвращается из инструкции else, где myValue имеет значение null.Передача данных из активности в фрагмент Возвращает Null
активность:
case R.id.forward:
Bundle bundle = new Bundle();
bundle.putString("message", "From Activity");
Fragment_02_Contacts mainFragment = new Fragment_02_Contacts();
mainFragment.setArguments(bundle);
getSupportFragmentManager().beginTransaction().add(android.R.id.content, mainFragment).commit();
break;
Фрагмент:
String myValue;
.....
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (myValue != null)
{
myValue = this.getArguments().getString("message");
Toast.makeText(getActivity(), "message: "+myValue, Toast.LENGTH_SHORT).show();
return inflater.inflate(R.layout.fragment_02_contacts, container, false);
}
else
{
Toast.makeText(getActivity(), "message: "+myValue, Toast.LENGTH_SHORT).show();
// message is null ????
}
EDIT: Я считаю, что причина может быть связана с:
getSupportFragmentManager().beginTransaction().add(android.R.id.content, mainFragment).commit();
Разрушает ли это мои аргументы и начинается новый фрагмент?
Если я назначил его сначала, приложение вылетает с помощью: java.lang.NullPointerException: пытается вызвать виртуальный метод «java.lang.String android.os.Bundle.getString (java.lang.String)» в ссылке на нулевой объект , чтобы избежать сбоя приложения, которое я использовал, если/else, поэтому с вашим методом происходит сбой приложения, потому что я получаю нулевую ссылку – user3560827
Это означает, что аргументы не установлены должным образом. Можете ли вы попытаться передать их в конструкторе, а затем установить там? Кроме того, рекомендуется использовать шаблон Factory design со статическим 'newInstance' для фрагментов, искать его. – Vucko