diff --git a/app/src/main/java/com/nivesh/production/bajajfd/BajajApplication.kt b/app/src/main/java/com/nivesh/production/bajajfd/BajajApplication.kt index 4245071..22e3de5 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/BajajApplication.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/BajajApplication.kt @@ -3,4 +3,16 @@ package com.nivesh.production.bajajfd import android.app.Application class BajajApplication : Application() { + private var mInstance: BajajApplication? = null + // private val mRequestQueue: RequestQueue? = null + + override fun onCreate() { + super.onCreate() + mInstance = this; + } + + @Synchronized + fun getInstanceApp(): BajajApplication? { + return mInstance + } } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/adapter/SectionsPagerAdapter.kt b/app/src/main/java/com/nivesh/production/bajajfd/adapter/SectionsPagerAdapter.kt index d024110..a576253 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/adapter/SectionsPagerAdapter.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/adapter/SectionsPagerAdapter.kt @@ -1,30 +1,19 @@ package com.nivesh.production.bajajfd.adapter -import android.content.Context import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager -import androidx.fragment.app.FragmentPagerAdapter -class SectionsPagerAdapter(private val context: Context, fm: FragmentManager) : - FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { - - private var fragmentList: MutableList = ArrayList() +class SectionsPagerAdapter(private val fm: FragmentManager, private val fragments: Array, private val NumberOfTabs: Int) : SmartFragmentStatePagerAdapter(fm) { override fun getItem(position: Int): Fragment { - return fragmentList[position] + return fragments[position] } - override fun getCount(): Int { - return fragmentList.size + override fun getPageTitle(position: Int): CharSequence? { + return null } - fun addFragment(fragment: Fragment) { - try { - if (!fragment.isAdded) { - fragmentList.add(fragment) - } - } catch (e: Exception) { - e.printStackTrace() - } + override fun getCount(): Int { + return NumberOfTabs } } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/adapter/SmartFragmentStatePagerAdapter.kt b/app/src/main/java/com/nivesh/production/bajajfd/adapter/SmartFragmentStatePagerAdapter.kt new file mode 100644 index 0000000..44ac534 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/adapter/SmartFragmentStatePagerAdapter.kt @@ -0,0 +1,29 @@ +package com.nivesh.production.bajajfd.adapter + +import android.util.SparseArray +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentStatePagerAdapter + +abstract class SmartFragmentStatePagerAdapter(fragmentManager: FragmentManager) : FragmentStatePagerAdapter(fragmentManager) { + val registeredFragments = SparseArray() + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val fragment = super.instantiateItem(container, position) as Fragment + registeredFragments.put(position, fragment) + return fragment + } + + // Unregister when the item is inactive + override fun destroyItem(container: View, position: Int, `object`: Any) { + registeredFragments.remove(position) + super.destroyItem(container, position, `object`) + } + + // Returns the fragment for the position (if instantiated) + fun getRegisteredFragment(position: Int): Fragment? { + return registeredFragments[position] + } +} diff --git a/app/src/main/java/com/nivesh/production/bajajfd/interfaces/SendData.kt b/app/src/main/java/com/nivesh/production/bajajfd/interfaces/SendData.kt index 41acf22..e976e20 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/interfaces/SendData.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/interfaces/SendData.kt @@ -1,6 +1,8 @@ package com.nivesh.production.bajajfd.interfaces +import com.nivesh.production.bajajfd.model.CreateFDApplicationResponse + interface SendData { - fun sendDataFragment(message: String?) + fun sendDataFragment(message: CreateFDApplicationResponse, currentItem: Int) } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt index 33ffc2f..47cca5f 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt @@ -1,8 +1,10 @@ package com.nivesh.production.bajajfd.ui.activity + import android.graphics.drawable.Drawable import android.os.Bundle import android.util.Log import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.google.gson.Gson @@ -10,7 +12,6 @@ import com.nivesh.production.bajajfd.adapter.SectionsPagerAdapter import com.nivesh.production.bajajfd.api.ApiClient import com.nivesh.production.bajajfd.databinding.ActivityBajajFdBinding import com.nivesh.production.bajajfd.interfaces.BajajFDInterface -import com.nivesh.production.bajajfd.interfaces.SendData import com.nivesh.production.bajajfd.model.* import com.nivesh.production.bajajfd.repositories.MainRepository import com.nivesh.production.bajajfd.ui.fragment.* @@ -25,7 +26,7 @@ import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.viewModel.* -class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface ,SendData{ +class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { lateinit var binding: ActivityBajajFdBinding private lateinit var viewModel: BajajFDViewModel @@ -46,8 +47,8 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface ,SendData{ var getClientDetailsResponse: getClientDetailsResponse private var stepCount: Int = 0 - - + private lateinit var sectionsPagerAdapter : SectionsPagerAdapter + private lateinit var fragments: Array override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -221,17 +222,28 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface ,SendData{ // steps setting setBackground(selectedShape(), defaultShape(), defaultShape(), defaultShape()) + if (stepCount == 3) { + fragments = arrayOf( + StepOneBajajFDFragment.getInstance(this), + StepTwoBajajFDFragment.getInstance(this), + StepFourBajajFDFragment.getInstance(this), + StepFiveBajajFDFragment.getInstance(this) + ) + } else if (stepCount == 4) { + fragments = arrayOf( + StepOneBajajFDFragment.getInstance(this), + StepTwoBajajFDFragment.getInstance(this), + StepThreeBajajFDFragment.getInstance(this), + StepFourBajajFDFragment.getInstance(this), + StepFiveBajajFDFragment.getInstance(this) + ) + } + // set viewPager - val sectionsPagerAdapter = - SectionsPagerAdapter(this@BajajFdMainActivity, supportFragmentManager) + sectionsPagerAdapter = + SectionsPagerAdapter(supportFragmentManager, fragments, stepsCount) val viewPager: ViewPager = binding.viewPager - sectionsPagerAdapter.addFragment(StepOneBajajFDFragment.getInstance(this@BajajFdMainActivity)) - sectionsPagerAdapter.addFragment(StepTwoBajajFDFragment.getInstance(this@BajajFdMainActivity)) - if (stepsCount == 4) { - sectionsPagerAdapter.addFragment(StepThreeBajajFDFragment.getInstance(this@BajajFdMainActivity)) - } - sectionsPagerAdapter.addFragment(StepFourBajajFDFragment.getInstance(this@BajajFdMainActivity)) - sectionsPagerAdapter.addFragment(StepFiveBajajFDFragment.getInstance(this@BajajFdMainActivity)) + viewPager.adapter = sectionsPagerAdapter viewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { @@ -308,7 +320,7 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface ,SendData{ getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_PAN checkFDKYCRequest.NiveshClientCode = getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE.toString() - stepOneBajajFDViewModel.checkFDKYC( checkFDKYCRequest, token) + stepOneBajajFDViewModel.checkFDKYC(checkFDKYCRequest, token) stepOneBajajFDViewModel.getFDKYCMutableData.observe(this) { response -> when (response) { is Resource.Success -> { @@ -413,14 +425,11 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface ,SendData{ when (code) { 200 -> { binding.viewPager.currentItem = currentItem - StepFourBajajFDFragment.getInstance(this) - .getFDData(createFDApplicationResponse ,this) - - - sendDataFragment("yaha data dalo") + StepFourBajajFDFragment.getInstance(this).displayReceivedData(createFDApplicationResponse) + val stepFourFDFragment: StepFourBajajFDFragment = + sectionsPagerAdapter.getRegisteredFragment(stepCount - 1) as StepFourBajajFDFragment + stepFourFDFragment.displayReceivedData(createFDApplicationResponse) } - - // 650 -> refreshToken() else -> { showDialogValidation( @@ -442,21 +451,6 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface ,SendData{ } } } - - - } - - } - - override fun sendDataFragment(message: String?) { - val tag = "android:switcher:" + com.nivesh.production.bajajfd.R.id.viewPager.toString() + ":" + 1 - val f: StepFourBajajFDFragment? = supportFragmentManager.findFragmentByTag(tag) as StepFourBajajFDFragment? - if (f != null) { - if (message != null) { - f.displayReceivedData(message) - } } - } - } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFourBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFourBajajFDFragment.kt index e98521f..160da45 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFourBajajFDFragment.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFourBajajFDFragment.kt @@ -1,5 +1,7 @@ package com.nivesh.production.bajajfd.ui.fragment +import android.app.Activity +import android.content.Context import android.os.Bundle import android.util.Log import android.view.LayoutInflater @@ -41,7 +43,6 @@ class StepFourBajajFDFragment : Fragment() { bajajFDInterface = bajajFDInterfaces } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -70,30 +71,14 @@ class StepFourBajajFDFragment : Fragment() { } - - - fun getFDData( - createFDApplicationResponse: CreateFDApplicationResponse, - activity: BajajFdMainActivity - ) - - { - uniqueId = createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId - // - getFDDetailsApi(createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId, activity) - customerListApi() - } - - - fun displayReceivedData(message: String) { - - Log.d("received data","Data received : $message") - + fun displayReceivedData(createFDApplicationResponse: CreateFDApplicationResponse) { + Log.e("createFDApplication", "Response-->"+createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId) + uniqueId = createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId + getFDDetailsApi(createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId) + customerListApi() } - - private fun customerListApi() { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { val getCodeRequest = GetCodeRequest() @@ -144,12 +129,11 @@ class StepFourBajajFDFragment : Fragment() { } - private fun getFDDetailsApi(uniqueId: String, activity: BajajFdMainActivity) { - if (Common.isNetworkAvailable(activity)) { + private fun getFDDetailsApi(uniqueId: String) { + if (Common.isNetworkAvailable(requireActivity())) { val getFDDetailsRequest = GetFDDetailsRequest() - getFDDetailsRequest.FDProvider = activity.resources.getString(R.string.bajaj) - getFDDetailsRequest.NiveshClientCode = - activity.getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE + getFDDetailsRequest.FDProvider = requireActivity().getString(R.string.bajaj) + getFDDetailsRequest.NiveshClientCode = (requireContext().applicationContext as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE getFDDetailsRequest.UniqueId = uniqueId stepFourBajajFDViewModel.getFDDetails(getFDDetailsRequest, Constants.token) stepFourBajajFDViewModel.getFDDetailsMutableData.observe(viewLifecycleOwner) { response -> @@ -189,7 +173,6 @@ class StepFourBajajFDFragment : Fragment() { } } } - } }