ViewPager внутри фрагмента диалога - PullRequest
0 голосов
/ 05 марта 2020

У меня есть диалоговое окно, в котором мне нужно отобразить 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 внутри фрагмента диалога, так что если кто-нибудь может мне помочь, я действительно ценю это.

Спасибо.

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