Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin “回收器”视图中的项目在更改为其他活动后消失,然后再次返回_Kotlin_Android Recyclerview_Billing_In App Purchase Receipt - Fatal编程技术网

Kotlin “回收器”视图中的项目在更改为其他活动后消失,然后再次返回

Kotlin “回收器”视图中的项目在更改为其他活动后消失,然后再次返回,kotlin,android-recyclerview,billing,in-app-purchase-receipt,Kotlin,Android Recyclerview,Billing,In App Purchase Receipt,这是一个非常新手的程序员,但不是一个好的英文打字机。我正在尝试使用PurchaseHistoryResponseListener为之前购买的商品创建一个检查程序。当检查者发现一些东西时,它会添加到一个列表中,然后向recyclerview_MYBook提供这些数据。问题是,当启动应用程序时,数据完全通过recyclerview_MYBook流动,但当移动到不同的活动并通过不同的方法(按钮单击)返回到以前的活动时,recyclerview_MYBook上的数据不会显示,只会通过传统的后退按钮显示,

这是一个非常新手的程序员,但不是一个好的英文打字机。我正在尝试使用PurchaseHistoryResponseListener为之前购买的商品创建一个检查程序。当检查者发现一些东西时,它会添加到一个列表中,然后向recyclerview_MYBook提供这些数据。问题是,当启动应用程序时,数据完全通过recyclerview_MYBook流动,但当移动到不同的活动并通过不同的方法(按钮单击)返回到以前的活动时,recyclerview_MYBook上的数据不会显示,只会通过传统的后退按钮显示,此时将显示recyclerview上的数据。下面是我的noob代码

类MainActivity:AppCompatActivity(),PurchasesUpdatedListener{

private lateinit var billingClient: BillingClient

private lateinit var blogadapternew: BlogRecyclerAdapterNew
private lateinit var blogadapterpremium: BlogRecyclerAdapterPremium
private lateinit var blogadapterfree: BlogRecyclerAdapterFree
private lateinit var blogadaptermybook: BlogRecyclerAdapterMyBook
private  lateinit var auth: FirebaseAuth

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    auth = FirebaseAuth.getInstance()
    //FirebaseAuth.getInstance().signOut()
    window.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE)
    window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN)
    setContentView(R.layout.activity_main)

    recycler_viewNew.layoutManager = LinearLayoutManager(this, RecyclerView.HORIZONTAL,false)
    recycler_viewNew.adapter= BlogRecyclerAdapterNew()
    recycler_viewPremium.layoutManager = LinearLayoutManager(this,RecyclerView.HORIZONTAL,false)
    recycler_viewPremium.adapter= BlogRecyclerAdapterPremium()
    recycler_viewFree.layoutManager = LinearLayoutManager(this,RecyclerView.HORIZONTAL,false)
    recycler_viewFree.adapter= BlogRecyclerAdapterFree()
    recycler_viewMyBook.layoutManager = LinearLayoutManager(this,RecyclerView.HORIZONTAL,false)
    recycler_viewMyBook.adapter= BlogRecyclerAdapterMyBook()

    if (supportActionBar != null)
        supportActionBar?.hide()



    setupBillingClient()
    initrecyclerView()
    initrecyclerViewPremium()
    initrecyclerViewFree()
    initrecyclerViewMyBook()
    addDataSetNew()
    addDataSetPremium()
    addDataSetFree()


    Logo.setOnClickListener{
        val intent = Intent(MonstaLogo.context, MainActivity::class.java)

        MonstaLogo.context.startActivity(intent)
    }

    MainFeaturedButton.setOnClickListener {
        val intent = Intent(MainFeaturedButton.context, MainActivity::class.java)

        MainFeaturedButton.context.startActivity(intent)
    }
    MainNewButton.setOnClickListener {
        val intent = Intent(MainNewButton.context, NewActivity::class.java)

        MainNewButton.context.startActivity(intent)
    }
    NewMore.setOnClickListener{
        val intent = Intent(NewMore.context, NewActivity::class.java)

        NewMore.context.startActivity(intent)
    }
    MainPremiumButton.setOnClickListener {
        val intent = Intent(MainPremiumButton.context, PremiumActivity::class.java)

        MainPremiumButton.context.startActivity(intent)
    }
    PremiumMore.setOnClickListener{
        val intent = Intent(PremiumMore.context, PremiumActivity::class.java)

        PremiumMore.context.startActivity(intent)
    }
    MainFreeButton.setOnClickListener {
        val intent = Intent(MainFreeButton.context, FreeActivity::class.java)

        MainFreeButton.context.startActivity(intent)
    }
    FreeMore.setOnClickListener {
        val intent = Intent(FreeMore.context, FreeActivity::class.java)
        FreeMore.context.startActivity(intent)
    }
    MainMyBookButton.setOnClickListener {
        val intent = Intent(MainMyBookButton.context, MyBookActivity::class.java)
        MainMyBookButton.context.startActivity(intent)
    }
    MyBookMore.setOnClickListener {
        val intent = Intent(MyBookMore.context, MyBookActivity::class.java)
        MyBookMore.context.startActivity(intent)
    }
}

private fun setupBillingClient() {
    billingClient = BillingClient.newBuilder(this)
        .enablePendingPurchases()
        .setListener(this)
        .build()
    billingClient.startConnection(object : BillingClientStateListener {
        override fun onBillingSetupFinished(billingResult: BillingResult) {
            if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
                // The BillingClient is ready. You can query purchases here.
                println("Setup Billing Done")
                PurchaseHistoryResponseListener()
            }
        }

        override fun onBillingServiceDisconnected() {
            // Try to restart the connection on the next request to
            // Google Play by calling the startConnection() method.
            println("Failed")
            setupBillingClient()
            println("Restart Connection")

        }
    })

}
override fun onPurchasesUpdated(
    billingResult: BillingResult?,
    purchases: MutableList<Purchase>?
) {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
private fun PurchaseHistoryResponseListener (){

    billingClient.queryPurchaseHistoryAsync(BillingClient.SkuType.INAPP) {
            responseCode, result ->
      //  println("queryPurchasesAsync INAPP results: ${result?.size}")
       // println("Getting Purchase History")
        println("$result")
        val dataMyBook1 = DataSourceMyBook.createDataSet()
        if ("testcode1" in result.toString()) {
            println("found it 1")
            dataMyBook1.add((BlogPost( "BookName","Link","No")))
        }
        if ("testcode2" in result.toString()) {
            println("found it 2")
            dataMyBook1.add((BlogPost( "BookName","Link","No")))
        }
        if ("testcode3" in result.toString()) {
            println("found it 3")
            dataMyBook1.add((BlogPost( "BookName","Link","No")))

        }
            blogadaptermybook.submitList(dataMyBook1)
        println(dataMyBook1)


    }
}




private fun addDataSetNew(){
    val dataNew = DataSourceNew.createDataSet()
    blogadapternew.submitList(dataNew)
}
private fun addDataSetPremium(){
    val dataPremium = DataSourcePremium.createDataSet()
    blogadapterpremium.submitList(dataPremium)
}
private fun addDataSetFree(){
    val dataFree = DataSourceFree.createDataSet()
    blogadapterfree.submitList(dataFree)
}
/*private fun addDataSetMyBook(){
    val dataMyBook1 = DataSourceMyBook.createDataSet()
    blogadaptermybook.submitList(dataMyBook1)
}*/
/*private fun addDataSetMyBook(){
    val dataMyBook1 = DataSourceMyBook.createDataSet()
    billingClient.queryPurchaseHistoryAsync(BillingClient.SkuType.INAPP) {
            responseCode, result ->
        println("$result")
    if ("bbbg_s2_c1_testcode1" in result.toString()){
        dataMyBook1.add((BlogPost( "Mini Comic 1","Link","No")))
    }
    if ("bbbg_s2_c1_testcode2" in result.toString()){
        dataMyBook1.add((BlogPost( "Mini Comic 2","Link","No")))
    }
    if ("bbbg_s2_c1_testcode3" in result.toString()){
        dataMyBook1.add((BlogPost( "Mini Comic 3","Link","No")))
    }
        blogadaptermybook.submitList(dataMyBook1)
}}*/


    /*dataMyBook.add((BlogPost( "Mini Comic 1","Link","No")))
    dataMyBook.add((BlogPost( "Mini Comic 1","Link","No")))
    dataMyBook.add((BlogPost( "Mini Comic 1","Link","No")))*/


private fun initrecyclerView(){
    recycler_viewNew.apply {
        layoutManager = LinearLayoutManager(this@MainActivity,RecyclerView.HORIZONTAL,false)
        val topSpacingItemDecoration = TopSpacingItemDecoration(padding = 30)
        addItemDecoration(topSpacingItemDecoration)
        blogadapternew = BlogRecyclerAdapterNew()
        adapter = blogadapternew
    }
}
private fun initrecyclerViewPremium(){
    recycler_viewPremium.apply {
        layoutManager = LinearLayoutManager(this@MainActivity,RecyclerView.HORIZONTAL,false)
        val topSpacingItemDecoration = TopSpacingItemDecoration(padding = 30)
        addItemDecoration(topSpacingItemDecoration)
        blogadapterpremium = BlogRecyclerAdapterPremium()
        adapter = blogadapterpremium
    }
}
private fun initrecyclerViewFree(){
    recycler_viewFree.apply {
        layoutManager = LinearLayoutManager(this@MainActivity,RecyclerView.HORIZONTAL,false)
        val topSpacingItemDecoration = TopSpacingItemDecoration(padding = 30)
        addItemDecoration(topSpacingItemDecoration)
        blogadapterfree = BlogRecyclerAdapterFree()
        adapter = blogadapterfree
    }
}
private fun initrecyclerViewMyBook(){
        recycler_viewMyBook.apply {
            layoutManager =
                LinearLayoutManager(this@MainActivity, RecyclerView.HORIZONTAL, false)
            val topSpacingItemDecoration = TopSpacingItemDecoration(padding = 30)
            addItemDecoration(topSpacingItemDecoration)
            blogadaptermybook = BlogRecyclerAdapterMyBook()
            adapter = blogadaptermybook
        }

}

public override fun onStart() {
    super.onStart()
    val currentUser = auth.currentUser
    updateUI(currentUser)
}
private fun updateUI(currentUser: FirebaseUser?) {

    if (currentUser != null) {
       AccountSettingButton.setImageResource(R.drawable.profileicon)
    }
}
private lateinit var billingClient:billingClient
私有lateinit var blogadapternew:BlogRecyclerAdapterNew
私有lateinit var blogadapterpremium:BlogRecyclerAdapterPremium
私有lateinit var blogadapterfree:BlogRecyclerAdapterFree
私有lateinit var blogadaptermybook:BlogRecyclerAdapterMyBook
私有lateinit var auth:FirebaseAuth
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
auth=FirebaseAuth.getInstance()
//FirebaseAuth.getInstance().signOut()
window.setFlags(WindowManager.LayoutParams.FLAG\u SECURE,WindowManager.LayoutParams.FLAG\u SECURE)
window.setFlags(WindowManager.LayoutParams.FLAG_全屏,WindowManager.LayoutParams.FLAG_全屏)
setContentView(R.layout.activity_main)
recycler\u viewNew.layoutManager=LinearLayoutManager(此,RecyclerView.HORIZONTAL,false)
recycler_viewNew.adapter=BlogRecyclerAdapterNew()
recycler\u viewPremium.layoutManager=LinearLayoutManager(此,RecyclerView.HORIZONTAL,false)
recycler_viewPremium.adapter=BlogRecyclerAdapterEmperium()
recycler_viewFree.layoutManager=LinearLayoutManager(此,RecyclerView.HORIZONTAL,false)
recycler_viewFree.adapter=BlogRecyclerAdapterFree()
recycler\u viewMyBook.layoutManager=LinearLayoutManager(此,RecyclerView.HORIZONTAL,false)
recycler\u viewMyBook.adapter=BlogRecyclerAdapterMyBook()
如果(supportActionBar!=null)
supportActionBar?.hide()
setupBillingClient()
initrecyclerView()
initRecycleServicewPremium()
initRecycleServiceWFree()
initRecycleServiceWmyBook()
addDataSetNew()
addDataSetPremium()
addDataSetFree()
Logo.setOnClickListener{
val intent=intent(MonstaLogo.context,MainActivity::class.java)
MonstaLogo.context.startActivity(intent)
}
MainFeaturedButton.setOnClickListener{
val intent=intent(MainFeaturedButton.context,MainActivity::class.java)
MainFeaturedButton.context.startActivity(intent)
}
MainNewButton.setOnClickListener{
val intent=intent(MainNewButton.context,NewActivity::class.java)
MainNewButton.context.startActivity(意图)
}
NewMore.setOnClickListener{
val intent=intent(NewMore.context,NewActivity::class.java)
NewMore.context.startActivity(intent)
}
MainPremiumButton.setOnClickListener{
val intent=intent(MainPremiumButton.context,PremiumActivity::class.java)
MainPremiumButton.context.startActivity(intent)
}
PremiumMore.setOnClickListener{
val intent=intent(PremiumMore.context,PremiumActivity::class.java)
PremiumMore.context.startActivity(意图)
}
MainFreeButton.setOnClickListener{
val intent=intent(MainFreeButton.context,FreeActivity::class.java)
MainFreeButton.context.startActivity(意图)
}
FreeMore.setOnClickListener{
val intent=intent(FreeMore.context,FreeActivity::class.java)
FreeMore.context.startActivity(intent)
}
MainMyBookButton.setOnClickListener{
val intent=intent(MainMyBookButton.context,MyBookActivity::class.java)
MainMyBookButton.context.startActivity(intent)
}
MyBookMore.setOnClickListener{
val intent=intent(MyBookMore.context,MyBookActivity::class.java)
MyBookMore.context.startActivity(intent)
}
}
私人娱乐设置BillingClient(){
billingClient=billingClient.newBuilder(此)
.enablePendingPurchases()
.setListener(此)
.build()
billingClient.startConnection(对象:BillingClientStateListener{
覆盖功能onBillingSetupFinished(billingResult:billingResult){
if(billingResult.responseCode==BillingClient.BillingResponseCode.OK){
//BillingClient已准备就绪。您可以在此查询购买情况。
println(“设置计费完成”)
PurchaseHistoryResponseListener()
}
}
覆盖onBillingServiceDisconnected(){
//尝试在下一次请求时重新启动连接以
//Google通过调用startConnection()方法播放。
println(“失败”)
setupBillingClient()
println(“重新启动连接”)
}
})
}
在购买时覆盖乐趣(
比林格勒:比林格勒?,
购买:可变列表?
) {
TODO(“未实现”)//要更改已创建函数的主体,请使用文件|设置|文件模板。
}
私人娱乐购买历史响应侦听器(){
billingClient.queryPurchaseHistoryAsync(billingClient.SkuType.INAPP){
响应代码,结果->
//println(“queryPurchasesAsync INAPP results:${result?.size}”)
//println(“获取购买历史记录”)
println($result)
val dataMyBook1=DataSourceMyBook.createDataSet()
if(result.toString()中的“testcode1”){
println(“找到它1”)
dataMyBook1.add((BlogPost(“BookName”、“Link”、“No”))
}
if(result.toString()中的“testcode2”){
println(“找到它2”)
dataMyBook1.add((BlogPost(“BookName”、“Link”、“No”))
private var items: List<BlogPost> = ArrayList()
private var items2: List<BlogPost> = ArrayList()



override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
    return BlogViewHolder(
        LayoutInflater.from(parent.context).inflate(
            R.layout.layout_blog_list_item_mybook,
            parent,
            false
        )
    )


}

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {

    when (holder) {

        is BlogViewHolder -> {
            holder.bind(items.get(position))
            holder.bind(items2.get(position))
        }
    }
}
override fun getItemCount(): Int {
    return items.size
}
fun submitList(bloglist: List<BlogPost>) {
    items = bloglist
    items2 = bloglist
}




class BlogViewHolder constructor(itemView: View) : RecyclerView.ViewHolder(itemView) {
    val blogImage: ImageButton = itemView.blog_imagemybook
    val blogTitle: TextView = itemView.blog_titlemybook
    val premiumImage: ImageView = itemView.premiumicon


    fun bind(blogPost: BlogPost) {
        blogTitle.setText(blogPost.title)

        val requestOptions = RequestOptions()
            .placeholder(R.drawable.mocksplash)
            .error(R.drawable.disconnect)



        Glide.with(itemView.blog_imagemybook)
            .applyDefaultRequestOptions(requestOptions)
            .load(blogPost.image)
            .into(blogImage)


        blogImage.setOnClickListener {
            Toast.makeText(blogImage.context, "<<Swipe left<<", Toast.LENGTH_SHORT).show()
            val intent = Intent(blogTitle.context, ComicReadingActivity::class.java)
            var KomikName = blogTitle.text.toString()
            intent.putExtra("KomikName",Name)
            blogImage.context.startActivity(intent)
        }
    }
}
companion object{

    fun createDataSet(): ArrayList<BlogPost> {

        val dataMyBook1 = ArrayList<BlogPost>()



        return dataMyBook1

    }


}