Отправить значение от активности к ее фрагменту - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь отправить данные из моего класса активности на его фрагмент вкладки, но в адаптере фрагмента он не получил данных и выдал ошибку nullPointerException.

вот мой код

изактивность

Intent receivedIntent = getIntent();
    String tenant = null;
    if ((bundle = receivedIntent.getExtras()) != null) {
        tenant = (String) bundle.get("tenant");
    }

    TabFragment tabFragment = new TabFragment();
    bundle.putString("tenant", tenant);
    tabFragment.setArguments(bundle);

до фрагмента

Bundle getTenant = this.getArguments();
    if(getTenant != null) {
        tenant = getTenant.getString("tenant");
        System.out.println("Tab fragment: " + tenant);
    }else {
        System.out.println("Tab fragment: null");
    }

пейджинговый адаптер

case 0:
            TabFragment tabFragment = new TabFragment();
            tabFragment.setArguments(bundle);
            return tabFragment;

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Используйте следующий код:

 Bundle bundle = new Bundle();
bundle.putString("edttext", "From Activity");
// set Fragmentclass Arguments
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);

и в методе Fragment onCreateView:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    String strtext = getArguments().getString("edttext");    
    return inflater.inflate(R.layout.fragment, container, false);
}

Другой способ Вы можете передавать данные, используя интерфейс, как показано ниже:1 шаг: я создал открытый интерфейс в своей деятельности и установщик для него:

    Private OnAboutDataReceivedListener mAboutDataListener;
      public interface OnAboutDataReceivedListener {
        void onDataReceived(YourModelClass model);
    }

     public void setAboutDataListener(OnAboutDataReceivedListener listener) {
        this.mAboutDataListener = listener;
      }

2 шаг: я реализовал этот интерфейс в своем фрагменте и установил прослушиватель:

public class YourActivity extends BaseFragment implements YourBaseActivity.OnAboutDataReceivedListener

    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            mActivity = (YourActivity) getActivity();
            mActivity.setAboutDataListener(this);
        }

3 шаг:Я переопределил метод интерфейса:

    @Override
    public void onDataReceived(YourClassModel model) {
    }
0 голосов
/ 08 июня 2018

В вашем фрагменте сделайте это

if(getArguments() != null) {
    tenant = getArguments().getString("tenant");
    System.out.println("Tab fragment: " + tenant);
}else {
    System.out.println("Tab fragment: null");
}

вместо

Bundle getTenant = this.getArguments();
if(getTenant != null) {
    tenant = getTenant.getString("tenant");
    System.out.println("Tab fragment: " + tenant);
}else {
    System.out.println("Tab fragment: null");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...