Передать объект из одного фрагмента в другой и сохранить полученный объект в глобальном объекте. - PullRequest
0 голосов
/ 09 июня 2019

Я хотел ПРОЙТИ ОБЪЕКТ МОДЕЛИ из интерфейса Fragment1 в Fragment2using (оба фрагмента в одном действии).Я получил этот объект в публичном классе Fragment2.Теперь я хочу сохранить полученный объект как глобальную переменную Fragment2.Так что я могу использовать другие методы того же Fragment2.Но ... Но ... когда я пытаюсь использовать глобальный объект в onCreateView (), получаю исключение NULL POINTER.

In Fragment1, 
 1. Interface declaration 
interface CommunicatePricePlanCheckOutInterface {
        void sendDataToCheckout( SinglePricePlanModel singleModel );
    }
 2. Object of Interface
    CommunicatePricePlanCheckOutInterface  communicationObject;
 3. passing data using method of interface in, onCreateView()
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_price_plan, 
                     container,false);
        allSampleData = new ArrayList<>();
        mPricePlanContinueButton.setOnClickListener(new View.OnClickListener() 
        {
            @Override
            public void onClick(View v) { 
               if (getActivity() != null) {
                  communicationObject.sendDataToCheckout(
                  allSampleData.get(0));
               } 
            }
        }); 
        return view;
       }
In activity, 
 4. implementing the interface
       public class NavDrawerActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener, 
         Fragment1.CommunicatePricePlanCheckOutInterface
 5. overriding interface method and in the method calling a public method of Fragment2. 
 @Override
    public void sendDataToCheckout(SinglePricePlanModel pricePlanModel ) {
        Fragment2 frag2 = new Fragment2();
        frag2.receivePlanData(pricePlanModel, mUserBasicInfo);

    }
In Fragment2, 
 6. Received 2 objects from Activity, I can use them in this method, but can not access those mSinglePricePlanModel, mUserBasicInfo objects outside this method, like onCreateView or onViewCreated. Getting Null Pointer Exception if I try to 
access.

public void receivePlanData(SinglePricePlanModel mSinglePricePlanModel , UserBasicInfo mUserBasicInfo ){ 
        this.mSinglePricePlanModel = mSinglePricePlanModel;
        this.mUserBasicInfo = mUserBasicInfo;
}

1 Ответ

0 голосов
/ 09 июня 2019

Вы инициализировали свой интерфейсный объект?Я не вижу никакой инициализации в вашем фрагменте, это может вызвать исключение нулевого указателя.Инициализируйте его внутри метода onAttach в вашем фрагменте, например так:

@Override
public void onAttach(Context context) {

    super.onAttach(context);

    if (context instanceof CommunicatePricePlanCheckOutInterface) {

        communicationObject = (CommunicatePricePlanCheckOutInterface) context;
    }
}

. Тогда он не должен выдавать исключение нулевого указателя.Обратитесь к этой ссылке для получения более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...