Soru & Cevap

[2]Activity'den Fragment'a veri gönderme

11.06.2020 - 11:41

Uygulama ilk açıldığında ana fragment'ım main activity üzeride çalışıyor ve internetten film listesi alıp burada gösteriyorum. Filtreleme işlemi içinde spinner ile verileri seçip filtrele butonuna bastığımda  aşağıdaki kodlarda olduğu gibi fragment içerisindeki bir methodu çalıştırmak istiyorum. Fakat hata alıyorum ve çözümünü bir türlü bulamadım, aldığım hata ise : lateinit property viewModel has not been initialized

class MoviesFragment : Fragment(){
private lateinit var viewModel : MoviesViewModel

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        viewModel = ViewModelProviders.of(this).get(MoviesViewModel::class.java)
        viewModel.refreshData(sortMethod)


}

fun filterMovie(quality : String, genre : String, rate : String, year : String, lang : String){
        println("sa")
        viewModel.filterMovie(quality, genre, rate, year, lang)

    }
}
class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

(navRight.menu.findItem(R.id.filtBut).actionView as Button).run {
            this.setOnClickListener {
                val fragment = MoviesFragment()
                fragment.filterMovie(filtQuality,filtGenre,filtRate,filtYear,filtLang)
               
            }
        }
  }
}

kodlarım da bu şekilde yardımcı olabilir misiniz

160 Görüntülenme

9 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-112887-1506457490.jpg
recepözen
16.06.2020 - 02:13

Birde forum doğru çalışsa :D  Ey Turkcell gör beni :D

Enes Seval
16.06.2020 - 03:23
Wp, discord vs kullanıyorsan desteğine hayır demem :)
Enes Seval
16.06.2020 - 03:23
enesseval@outlook.com yazabilirsin istersen :)
Recep Özen
16.06.2020 - 03:53
https://discord.gg/xVwdTd
picture-112887-1506457490.jpg
recepözen
15.06.2020 - 10:55

 

Kotlin bilmiyorum ancak sana bunu javada nasıl yapacağını söyliyeyim. Activitylerin ve fragmnetlerin bir yaşam döngüleri var ve bu yaşam döngülerini dışardan bir mudahale ile kullanamazsın. Bu iş için veriyi fragmnette çeke bilrisin veya çektiğin veriyi fragmneti başlatırken gönderebilrisin. Aşağıda verdiğim örnek fragmettin static Constructuru olan newInstance ile veri göndre bilirisin.

 

public class BuyingFragment extends Fragment {

    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;

    public BuyingFragment() {
        // Required empty public constructor
    }

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment BuyingFragment.
     */
    // TODO: Rename and change types and number of parameters
    public static BuyingFragment newInstance(String param1, String param2) {
        BuyingFragment fragment = new BuyingFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }

    private String TAG = "AdsActivity";
    private Context mContext;
    private BillingClient mBillingClient;
    private Button btn_ads_remove_mount, btn_ads_remove_3_mount, btn_ads_remove_6_mount, btn_ads_remove_year;
    private TextView tv_text;
    private String sDate;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_buying, container, false);
   

        return view;
    }
Görsel kaldırıldı.Görsel kaldırıldı.

 

                FragmentManager fragmentManager = getFragmentManager();
                FragmentTransaction transaction = fragmentManager.beginTransaction();

                Fragment fragment = BuyingFragment.newInstance(mUser.getUser_id(), true);
                transaction.replace(R.id.main_container, fragment, "PF_" + mUser.getUser_id());
                transaction.addToBackStack(null);
                transaction.commit();
Görsel kaldırıldı.Görsel kaldırıldı.

Yukarıda veriş olduğum diğer kod parçası ise bu fragmenti newInstance kullanarak başlatmanı sağlar. Diyelim sonradan kullanıcı spiner ile veri dğişikliği yaptı o zaman nasıl veri göndericem dersen buda gördüğün fragment değişkeni üzerinden BuyingFragment fragmeti içinde yazacağın bir public metot ile liste güncellemesi yapabilirsin ancak listenin ve liste adaptörünün null kontrolünü yapmayı unutma :D umarım anlamışsındır kolay gelsin.

Enes Seval
16.06.2020 - 02:10
Hocam Allah razı olsun 10 gündür uğraşıyorum artık bırakmıştım arada sorduğum yerlerden cevaplara bakıyordum, gördüm uyguladım çalıştı çok sağol :):)
Recep Özen
16.06.2020 - 02:15
istediğin zaman soru sora bilirsin :D
picture-112887-1506457490.jpg
recepözen
15.06.2020 - 10:55

 

Kotlin bilmiyorum ancak sana bunu javada nasıl yapacağını söyliyeyim. Activitylerin ve fragmnetlerin bir yaşam döngüleri var ve bu yaşam döngülerini dışardan bir mudahale ile kullanamazsın. Bu iş için veriyi fragmnette çeke bilrisin veya çektiğin veriyi fragmneti başlatırken gönderebilrisin. Aşağıda verdiğim örnek fragmettin static Constructuru olan newInstance ile veri göndre bilirisin.

 

public class BuyingFragment extends Fragment {

    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;

    public BuyingFragment() {
        // Required empty public constructor
    }

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment BuyingFragment.
     */
    // TODO: Rename and change types and number of parameters
    public static BuyingFragment newInstance(String param1, String param2) {
        BuyingFragment fragment = new BuyingFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }

    private String TAG = "AdsActivity";
    private Context mContext;
    private BillingClient mBillingClient;
    private Button btn_ads_remove_mount, btn_ads_remove_3_mount, btn_ads_remove_6_mount, btn_ads_remove_year;
    private TextView tv_text;
    private String sDate;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_buying, container, false);
   

        return view;
    }
Görsel kaldırıldı.Görsel kaldırıldı.

 

                FragmentManager fragmentManager = getFragmentManager();
                FragmentTransaction transaction = fragmentManager.beginTransaction();

                Fragment fragment = BuyingFragment.newInstance(mUser.getUser_id(), true);
                transaction.replace(R.id.main_container, fragment, "PF_" + mUser.getUser_id());
                transaction.addToBackStack(null);
                transaction.commit();
Görsel kaldırıldı.Görsel kaldırıldı.

Yukarıda veriş olduğum diğer kod parçası ise bu fragmenti newInstance kullanarak başlatmanı sağlar. Diyelim sonradan kullanıcı spiner ile veri dğişikliği yaptı o zaman nasıl veri göndericem dersen buda gördüğün fragment değişkeni üzerinden BuyingFragment fragmeti içinde yazacağın bir public metot ile liste güncellemesi yapabilirsin ancak listenin ve liste adaptörünün null kontrolünü yapmayı unutma :D umarım anlamışsındır kolay gelsin.

picture-112887-1506457490.jpg
recepözen
15.06.2020 - 10:55

 

Kotlin bilmiyorum ancak sana bunu javada nasıl yapacağını söyliyeyim. Activitylerin ve fragmnetlerin bir yaşam döngüleri var ve bu yaşam döngülerini dışardan bir mudahale ile kullanamazsın. Bu iş için veriyi fragmnette çeke bilrisin veya çektiğin veriyi fragmneti başlatırken gönderebilrisin. Aşağıda verdiğim örnek fragmettin static Constructuru olan newInstance ile veri göndre bilirisin.

 

public class BuyingFragment extends Fragment {

    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;

    public BuyingFragment() {
        // Required empty public constructor
    }

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment BuyingFragment.
     */
    // TODO: Rename and change types and number of parameters
    public static BuyingFragment newInstance(String param1, String param2) {
        BuyingFragment fragment = new BuyingFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }

    private String TAG = "AdsActivity";
    private Context mContext;
    private BillingClient mBillingClient;
    private Button btn_ads_remove_mount, btn_ads_remove_3_mount, btn_ads_remove_6_mount, btn_ads_remove_year;
    private TextView tv_text;
    private String sDate;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_buying, container, false);
   

        return view;
    }
Görsel kaldırıldı.Görsel kaldırıldı.

 

                FragmentManager fragmentManager = getFragmentManager();
                FragmentTransaction transaction = fragmentManager.beginTransaction();

                Fragment fragment = BuyingFragment.newInstance(mUser.getUser_id(), true);
                transaction.replace(R.id.main_container, fragment, "PF_" + mUser.getUser_id());
                transaction.addToBackStack(null);
                transaction.commit();
Görsel kaldırıldı.Görsel kaldırıldı.

Yukarıda veriş olduğum diğer kod parçası ise bu fragmenti newInstance kullanarak başlatmanı sağlar. Diyelim sonradan kullanıcı spiner ile veri dğişikliği yaptı o zaman nasıl veri göndericem dersen buda gördüğün fragment değişkeni üzerinden BuyingFragment fragmeti içinde yazacağın bir public metot ile liste güncellemesi yapabilirsin ancak listenin ve liste adaptörünün null kontrolünü yapmayı unutma :D umarım anlamışsındır kolay gelsin.

picture-112887-1506457490.jpg
recepözen
15.06.2020 - 10:54

 

Kotlin bilmiyorum ancak sana bunu javada nasıl yapacağını söyliyeyim. Activitylerin ve fragmnetlerin bir yaşam döngüleri var ve bu yaşam döngülerini dışardan bir mudahale ile kullanamazsın. Bu iş için veriyi fragmnette çeke bilrisin veya çektiğin veriyi fragmneti başlatırken gönderebilrisin. Aşağıda verdiğim örnek fragmettin static Constructuru olan newInstance ile veri göndre bilirisin.

 

public class BuyingFragment extends Fragment {

    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;

    public BuyingFragment() {
        // Required empty public constructor
    }

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment BuyingFragment.
     */
    // TODO: Rename and change types and number of parameters
    public static BuyingFragment newInstance(String param1, String param2) {
        BuyingFragment fragment = new BuyingFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }

    private String TAG = "AdsActivity";
    private Context mContext;
    private BillingClient mBillingClient;
    private Button btn_ads_remove_mount, btn_ads_remove_3_mount, btn_ads_remove_6_mount, btn_ads_remove_year;
    private TextView tv_text;
    private String sDate;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_buying, container, false);
   

        return view;
    }
Görsel kaldırıldı.Görsel kaldırıldı.

 

                FragmentManager fragmentManager = getFragmentManager();
                FragmentTransaction transaction = fragmentManager.beginTransaction();

                Fragment fragment = BuyingFragment.newInstance(mUser.getUser_id(), true);
                transaction.replace(R.id.main_container, fragment, "PF_" + mUser.getUser_id());
                transaction.addToBackStack(null);
                transaction.commit();
Görsel kaldırıldı.Görsel kaldırıldı.

Yukarıda veriş olduğum diğer kod parçası ise bu fragmenti newInstance kullanarak başlatmanı sağlar. Diyelim sonradan kullanıcı spiner ile veri dğişikliği yaptı o zaman nasıl veri göndericem dersen buda gördüğün fragment değişkeni üzerinden BuyingFragment fragmeti içinde yazacağın bir public metot ile liste güncellemesi yapabilirsin ancak listenin ve liste adaptörünün null kontrolünü yapmayı unutma :D umarım anlamışsındır kolay gelsin.

picture-112887-1506457490.jpg
recepözen
15.06.2020 - 10:54

 

Kotlin bilmiyorum ancak sana bunu javada nasıl yapacağını söyliyeyim. Activitylerin ve fragmnetlerin bir yaşam döngüleri var ve bu yaşam döngülerini dışardan bir mudahale ile kullanamazsın. Bu iş için veriyi fragmnette çeke bilrisin veya çektiğin veriyi fragmneti başlatırken gönderebilrisin. Aşağıda verdiğim örnek fragmettin static Constructuru olan newInstance ile veri göndre bilirisin.

 

public class BuyingFragment extends Fragment {

    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;

    public BuyingFragment() {
        // Required empty public constructor
    }

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment BuyingFragment.
     */
    // TODO: Rename and change types and number of parameters
    public static BuyingFragment newInstance(String param1, String param2) {
        BuyingFragment fragment = new BuyingFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }

    private String TAG = "AdsActivity";
    private Context mContext;
    private BillingClient mBillingClient;
    private Button btn_ads_remove_mount, btn_ads_remove_3_mount, btn_ads_remove_6_mount, btn_ads_remove_year;
    private TextView tv_text;
    private String sDate;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_buying, container, false);
   

        return view;
    }
Görsel kaldırıldı.Görsel kaldırıldı.

 

                FragmentManager fragmentManager = getFragmentManager();
                FragmentTransaction transaction = fragmentManager.beginTransaction();

                Fragment fragment = BuyingFragment.newInstance(mUser.getUser_id(), true);
                transaction.replace(R.id.main_container, fragment, "PF_" + mUser.getUser_id());
                transaction.addToBackStack(null);
                transaction.commit();
Görsel kaldırıldı.Görsel kaldırıldı.

Yukarıda veriş olduğum diğer kod parçası ise bu fragmenti newInstance kullanarak başlatmanı sağlar. Diyelim sonradan kullanıcı spiner ile veri dğişikliği yaptı o zaman nasıl veri göndericem dersen buda gördüğün fragment değişkeni üzerinden BuyingFragment fragmeti içinde yazacağın bir public metot ile liste güncellemesi yapabilirsin ancak listenin ve liste adaptörünün null kontrolünü yapmayı unutma :D umarım anlamışsındır kolay gelsin.

picture-112887-1506457490.jpg
recepözen
15.06.2020 - 10:54

 

Kotlin bilmiyorum ancak sana bunu javada nasıl yapacağını söyliyeyim. Activitylerin ve fragmnetlerin bir yaşam döngüleri var ve bu yaşam döngülerini dışardan bir mudahale ile kullanamazsın. Bu iş için veriyi fragmnette çeke bilrisin veya çektiğin veriyi fragmneti başlatırken gönderebilrisin. Aşağıda verdiğim örnek fragmettin static Constructuru olan newInstance ile veri göndre bilirisin.

 

public class BuyingFragment extends Fragment {

    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;

    public BuyingFragment() {
        // Required empty public constructor
    }

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment BuyingFragment.
     */
    // TODO: Rename and change types and number of parameters
    public static BuyingFragment newInstance(String param1, String param2) {
        BuyingFragment fragment = new BuyingFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }

    private String TAG = "AdsActivity";
    private Context mContext;
    private BillingClient mBillingClient;
    private Button btn_ads_remove_mount, btn_ads_remove_3_mount, btn_ads_remove_6_mount, btn_ads_remove_year;
    private TextView tv_text;
    private String sDate;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_buying, container, false);
   

        return view;
    }
Görsel kaldırıldı.Görsel kaldırıldı.

 

                FragmentManager fragmentManager = getFragmentManager();
                FragmentTransaction transaction = fragmentManager.beginTransaction();

                Fragment fragment = BuyingFragment.newInstance(mUser.getUser_id(), true);
                transaction.replace(R.id.main_container, fragment, "PF_" + mUser.getUser_id());
                transaction.addToBackStack(null);
                transaction.commit();
Görsel kaldırıldı.Görsel kaldırıldı.

Yukarıda veriş olduğum diğer kod parçası ise bu fragmenti newInstance kullanarak başlatmanı sağlar. Diyelim sonradan kullanıcı spiner ile veri dğişikliği yaptı o zaman nasıl veri göndericem dersen buda gördüğün fragment değişkeni üzerinden BuyingFragment fragmeti içinde yazacağın bir public metot ile liste güncellemesi yapabilirsin ancak listenin ve liste adaptörünün null kontrolünü yapmayı unutma :D umarım anlamışsındır kolay gelsin.

picture-112887-1506457490.jpg
recepözen
15.06.2020 - 10:54

 

Kotlin bilmiyorum ancak sana bunu javada nasıl yapacağını söyliyeyim. Activitylerin ve fragmnetlerin bir yaşam döngüleri var ve bu yaşam döngülerini dışardan bir mudahale ile kullanamazsın. Bu iş için veriyi fragmnette çeke bilrisin veya çektiğin veriyi fragmneti başlatırken gönderebilrisin. Aşağıda verdiğim örnek fragmettin static Constructuru olan newInstance ile veri göndre bilirisin.

 

public class BuyingFragment extends Fragment {

    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;

    public BuyingFragment() {
        // Required empty public constructor
    }

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment BuyingFragment.
     */
    // TODO: Rename and change types and number of parameters
    public static BuyingFragment newInstance(String param1, String param2) {
        BuyingFragment fragment = new BuyingFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }

    private String TAG = "AdsActivity";
    private Context mContext;
    private BillingClient mBillingClient;
    private Button btn_ads_remove_mount, btn_ads_remove_3_mount, btn_ads_remove_6_mount, btn_ads_remove_year;
    private TextView tv_text;
    private String sDate;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_buying, container, false);
   

        return view;
    }
Görsel kaldırıldı.Görsel kaldırıldı.

 

                FragmentManager fragmentManager = getFragmentManager();
                FragmentTransaction transaction = fragmentManager.beginTransaction();

                Fragment fragment = BuyingFragment.newInstance(mUser.getUser_id(), true);
                transaction.replace(R.id.main_container, fragment, "PF_" + mUser.getUser_id());
                transaction.addToBackStack(null);
                transaction.commit();
Görsel kaldırıldı.Görsel kaldırıldı.

Yukarıda veriş olduğum diğer kod parçası ise bu fragmenti newInstance kullanarak başlatmanı sağlar. Diyelim sonradan kullanıcı spiner ile veri dğişikliği yaptı o zaman nasıl veri göndericem dersen buda gördüğün fragment değişkeni üzerinden BuyingFragment fragmeti içinde yazacağın bir public metot ile liste güncellemesi yapabilirsin ancak listenin ve liste adaptörünün null kontrolünü yapmayı unutma :D umarım anlamışsındır kolay gelsin.

picture-112887-1506457490.jpg
recepözen
15.06.2020 - 10:54

 

Kotlin bilmiyorum ancak sana bunu javada nasıl yapacağını söyliyeyim. Activitylerin ve fragmnetlerin bir yaşam döngüleri var ve bu yaşam döngülerini dışardan bir mudahale ile kullanamazsın. Bu iş için veriyi fragmnette çeke bilrisin veya çektiğin veriyi fragmneti başlatırken gönderebilrisin. Aşağıda verdiğim örnek fragmettin static Constructuru olan newInstance ile veri göndre bilirisin.

 

public class BuyingFragment extends Fragment {

    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;

    public BuyingFragment() {
        // Required empty public constructor
    }

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment BuyingFragment.
     */
    // TODO: Rename and change types and number of parameters
    public static BuyingFragment newInstance(String param1, String param2) {
        BuyingFragment fragment = new BuyingFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }

    private String TAG = "AdsActivity";
    private Context mContext;
    private BillingClient mBillingClient;
    private Button btn_ads_remove_mount, btn_ads_remove_3_mount, btn_ads_remove_6_mount, btn_ads_remove_year;
    private TextView tv_text;
    private String sDate;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_buying, container, false);
   

        return view;
    }
Görsel kaldırıldı.Görsel kaldırıldı.

 

                FragmentManager fragmentManager = getFragmentManager();
                FragmentTransaction transaction = fragmentManager.beginTransaction();

                Fragment fragment = BuyingFragment.newInstance(mUser.getUser_id(), true);
                transaction.replace(R.id.main_container, fragment, "PF_" + mUser.getUser_id());
                transaction.addToBackStack(null);
                transaction.commit();
Görsel kaldırıldı.Görsel kaldırıldı.

Yukarıda veriş olduğum diğer kod parçası ise bu fragmenti newInstance kullanarak başlatmanı sağlar. Diyelim sonradan kullanıcı spiner ile veri dğişikliği yaptı o zaman nasıl veri göndericem dersen buda gördüğün fragment değişkeni üzerinden BuyingFragment fragmeti içinde yazacağın bir public metot ile liste güncellemesi yapabilirsin ancak listenin ve liste adaptörünün null kontrolünü yapmayı unutma :D umarım anlamışsındır kolay gelsin.