У меня есть диалоговое окно, в котором мне нужно отобразить viewPager с помощью fragStatePagerAdapter. Я получаю список с моего сервера, который я хочу отобразить внутри этого viewPager. Я не получаю никакой ошибки. Экран просто немного затухает, но я не вижу никакого вида диалога.
** Вот мой фрагмент диалога: **
package com.example.atry.MakeComplaint
import android.app.AlertDialog
import android.app.Dialog
import android.content.Context
import android.location.Address
import android.location.Geocoder
import android.net.Uri
import android.os.Bundle
import android.util.Log
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.FragmentActivity
import androidx.viewpager.widget.ViewPager
import com.example.atry.R
import com.example.atry.Retrofit.INodeJS
import com.example.atry.Retrofit.Observables
import com.example.atry.Retrofit.RetrofitClient
import com.squareup.picasso.Picasso
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.schedulers.Schedulers
import kotlinx.android.synthetic.main.activity_signup.*
import retrofit2.Call
import retrofit2.Response
import java.io.File
import java.util.*
class PopupDialog_2 : DialogFragment() {
private lateinit var viewPager: ViewPager
private lateinit var pagerAdapter: PopupPagerAdapter
lateinit var customView:View
private lateinit var MyExistingComplain: List<Observables.Complaint>
fun sendExistingComplaintItem(complaint: List<Observables.Complaint>){
this.MyExistingComplain = complaint
// Log.d("MyExistingComplain onCreateDialog", MyExistingComplain.toString())
}
// override fun onCreateView(
// inflater: LayoutInflater,
// container: ViewGroup?,
// savedInstanceState: Bundle?
// ): View? {
// return customView
// }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val builder = AlertDialog.Builder(activity)
//
customView = activity!!.layoutInflater.inflate(R.layout.fragment_popup_dialog_2, null, false)
viewPager = customView.findViewById(R.id.popup_viewpager)
pagerAdapter = PopupPagerAdapter(fragmentManager!!,MyExistingComplain)
viewPager.adapter = pagerAdapter
builder.setView(view)
return builder.create()
//
}
// override fun onResume() {
// super.onResume()
// viewPager.adapter = pagerAdapter
//
// }
}
Вот мой FragmentStatePagerAdapter :
package com.example.atry.MakeComplaint
import android.graphics.Movie
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentStatePagerAdapter
import com.example.atry.Retrofit.Observables
class PopupPagerAdapter(fragmentManager: FragmentManager, private val listOfExistingComplaints: List<Observables.Complaint>) :
FragmentStatePagerAdapter(fragmentManager, FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
override fun getItem(position: Int): Fragment {
return ExistingFragment.newInstance(listOfExistingComplaints[position])
}
override fun getCount(): Int {
return listOfExistingComplaints.size
}
}
А вот пример фрагмента:
package com.example.atry.MakeComplaint
import android.content.Context
import android.net.Uri
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import com.example.atry.R
import com.example.atry.Retrofit.Observables
import com.squareup.picasso.Picasso
class ExistingFragment : Fragment() {
lateinit var complaintIdView : TextView
lateinit var complaintTypeView : TextView
lateinit var complaintStatusView : TextView
lateinit var complaintDateView : TextView
lateinit var complaintLoctaionView : TextView
lateinit var complaintImageView : ImageView
lateinit var complaintDescriptionView : TextView
lateinit var imagePath: String
lateinit var address:String
private lateinit var MyExistingComplain: List<Observables.Complaint>
// fun sendExistingComplaintItem(complaint: List<Observables.Complaint>){
//
// this.MyExistingComplain = complaint
// // Log.d("MyExistingComplain onCreateDialog", MyExistingComplain.toString())
//
//
// }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
}
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val view = inflater.inflate(R.layout.fragment_existing, container, false)
complaintIdView = view.findViewById<TextView>(R.id.complainNumber)
complaintTypeView = view.findViewById<TextView>(R.id.complaintype)
complaintStatusView = view.findViewById<TextView>(R.id.complainStatus)
complaintDateView = view.findViewById<TextView>(R.id.complaindate)
complaintLoctaionView = view.findViewById<TextView>(R.id.complainLocation)
complaintImageView = view.findViewById<ImageView>(R.id.complainImage)
complaintDescriptionView = view.findViewById<TextView>(R.id.complainDescription)
val args = arguments
complaintIdView.text = String.format("%d", args!!.getInt(complaint_id))
complaintTypeView.text = args.getString(complaint_type_name)
complaintStatusView.text = args.getString(complaint_status)
// complaintDateView.text = MyExistingComplain.
// complaintLoctaionView.text = address
complaintDescriptionView.text = args.getString(complaint_description)
// this.address = getlocation(MyExistingComplain.Location.longitude, MyExistingComplain.Location.latitude)
imagePath = "http://"+BaseUrl+":3001" + args.getString(complaint_image)
Picasso.get().load(imagePath).into(complaintImageView)
return view
}
companion object {
val complaint_id = "id"
val complaint_type_name = "ComplaintType"
val complaint_image = "image"
val complaint_location ="Location"
val complaint_description = "description"
val complaint_status = "Status"
// Method for creating new instances of the fragment
fun newInstance(complaint: Observables.Complaint): ExistingFragment {
// Store the movie data in a Bundle object
val args = Bundle()
args.putInt(complaint_id, complaint.id)
args.putString(complaint_description, complaint.description)
args.putString(complaint_image, complaint.image)
// args.putString(complaint_location, complaint.Location.latitude)
args.putString(complaint_type_name,complaint.ComplaintType.typeName)
args.putString(complaint_status,complaint.Status.statusType)
// Create a new MovieFragment and set the Bundle as the arguments
// to be retrieved and displayed when the view is created
val fragment = ExistingFragment()
fragment.arguments = args
return fragment
}
}
}
Я никогда не работал с viewPager внутри фрагмента диалога, так что если кто-нибудь может мне помочь, я действительно ценю это.
Спасибо.