जब मैं द्वितीयक गतिविधि पर एक बटन दबाता हूं तो मैं व्यूपेजर को लागू करने की कोशिश कर रहा हूं, मैंने एक पेजएडैपर क्लास बनाया है जो रीसाइक्लर व्यू को बढ़ाता है। एडाप्टर। मुझे व्यूपेजर रनटाइम पर शून्य त्रुटि नहीं होनी चाहिए।

पेजएडेपर.kt

open class PageAdapter(context: Context, arrayList: ArrayList<Uri>) : RecyclerView.Adapter<PageAdapter.MyViewHolder>() {
    private var mContext: Context? =null
    private var galleryUri= arrayListOf<Uri>()
    private var layoutInflater: LayoutInflater? =null
    init {
        this.mContext=context
        this.galleryUri=arrayList
        this.layoutInflater=context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
    }
    private fun onBindViewHolderr(holder: MyViewHolder, position: Int) {
        holder.iView.setImageURI(galleryUri[position])
    }
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
        val view=LayoutInflater.from(mContext).inflate(R.layout.image_container,parent,false)
        return MyViewHolder(view)
    }
    override fun getItemCount(): Int {
        return galleryUri.size
    }
    class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        val iView: ImageView
        init {
            super.itemView
            iView=itemView.findViewById(R.id.imageContainer)
        }
    }
    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        onBindViewHolderr(holder, position)
    }
}

Image_container.xml


<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/imageContainer"
        android:contentDescription="@string/gallery" />
</LinearLayout>

गतिविधि_गैलरी.एक्सएमएल

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageButton
        android:id="@+id/galleryBack"
        android:layout_width="59dp"
        android:layout_height="56dp"
        android:background="@android:color/transparent"
        android:contentDescription="@string/back_button"
        android:src="@drawable/ic_baseline_arrow_back_24"
        style="@style/Widget.AppCompat.Button.Colored"
        app:layout_constraintHorizontal_bias="0.05"
        app:layout_constraintVertical_bias="0.05"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <androidx.viewpager2.widget.ViewPager2
        android:id="@+id/viewPager"
        android:layout_width="409dp"
        android:layout_height="729dp"
        android:background="@android:color/black"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

    </androidx.viewpager2.widget.ViewPager2>

</androidx.constraintlayout.widget.ConstraintLayout>

बटन पर व्यूपेजर पर निर्माण गतिविधि_मेन से क्लिक करें

gallery.setOnClickListener {    // gallery button reference
            if (lastImageUri!=null){
                val intent= Intent(this,GalleryActivity::class.java) 
                startActivity(intent)    // inflates activity_gallery.xml
                val iAdapter=PageAdapter(this,galleryUri) // creating object with params
                viewPager.adapter=iAdapter    // here comes the error
            }
        }

अद्यतन

गैलरीएक्टिविटी.केटी

इसमें केवल setContentview to activity_gallery.xml है क्या मुझे कुछ भी जोड़ने की आवश्यकता है।

class GalleryActivity : AppCompatActivity() {
    public override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_gallery)
        overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right)
        galleryBack.setOnClickListener {
            finish()
            overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right)
        }
    }
}

मुझे इसके बारे में समझाएं क्योंकि मैं एंड्रॉइड के लिए नया हूं। धन्यवाद!

0
Ajith Selvan 23 अगस्त 2020, 16:20

1 उत्तर

सबसे बढ़िया उत्तर

तो, startActivity GalleryActivity कक्षा में जाएगा। इसके बाद आपको लाइनों को GalleryActivity में डालना होगा।

ठीक है, अब जबकि आपने अपना GalleryActivity.kt जोड़ लिया है। आपको 2 बदलाव करने होंगे। सबसे पहले, आपकी गतिविधि_मेन में:

gallery.setOnClickListener {    // gallery button reference
   if (lastImageUri!=null){
      val intent= Intent(this,GalleryActivity::class.java)
      intent.putExtra("IMAGE_URI", galleryUri)
      startActivity(intent)    // inflates activity_gallery.xml
   }
}

फिर, अपने GalleryActivity.kt . में

class GalleryActivity : AppCompatActivity() {
    public override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_gallery)

        val galleryUri = getIntent().getStringExtra("GALLERY_URI")
        val iAdapter=PageAdapter(this,galleryUri) // creating object with params
        viewPager.adapter=iAdapter 
     overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right)
        galleryBack.setOnClickListener {
            finish()
            overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right)
        }
    }
}

उसकी कोशिश करो।

1
Greg Billetdeaux 23 अगस्त 2020, 21:48