我有一個登錄螢屏。切換到HomeScreenActivity用戶登錄時。我想在活動打開時顯示有關用戶資訊的彈出視窗訊息。但我得到一個“無法添加視窗——令牌 null 無效;你的活動在進行嗎?錯誤。我有一個名為popup_user_information. 我正在為這個專案使用視圖系結。我該如何解決?
package com.tcoding.instagramloginscreen
import android.annotation.SuppressLint
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.Display
import android.view.Gravity
import android.widget.PopupWindow
import android.widget.Toast
import androidx.core.hardware.display.DisplayManagerCompat
import androidx.viewpager.widget.ViewPager
import com.tcoding.instagramloginscreen.databinding.ActivityHomePageBinding
import com.tcoding.instagramloginscreen.databinding.PopupUserInformationBinding
class HomePageActivity : AppCompatActivity() {
lateinit var binding: ActivityHomePageBinding
lateinit var bindingPopup: PopupUserInformationBinding
@SuppressLint("SetTextI18n")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityHomePageBinding.inflate(layoutInflater)
setContentView(binding.root)
val username = intent.getStringExtra("username")
val password = intent.getStringExtra("password")
binding.tvUsername.text = binding.tvUsername.text.toString() username
binding.tvPassword.text = binding.tvPassword.text.toString() password
binding.btnExit.setOnClickListener{
val intent = Intent(this, MainActivity::class.java)
intent.putExtra("username", username)
intent.putExtra("password", password)
setResult(RESULT_OK)
finish()
}
popUp()
}
fun popUp()
{
val username = intent.getStringExtra("username")
val password = intent.getStringExtra("password")
bindingPopup = PopupUserInformationBinding.inflate(layoutInflater)
val popup = PopupWindow(bindingPopup.root, ViewPager.LayoutParams.MATCH_PARENT, ViewPager.LayoutParams.WRAP_CONTENT)
popup.showAtLocation(bindingPopup.root, Gravity.BOTTOM, 0,0)
bindingPopup.usernameInfo.text = username
bindingPopup.passwordInfo.setText(password)
bindingPopup.btnKaydet.setOnClickListener {
Toast.makeText(this,"Clicked save",Toast.LENGTH_SHORT).show()
popup.dismiss()
}
bindingPopup.btnNotnow.setOnClickListener {
Toast.makeText(this,"Clicked Not now",Toast.LENGTH_SHORT).show()
popup.dismiss()
}
}
}
uj5u.com熱心網友回復:
您試圖過早地顯示彈出視窗。OnCreate 上的視圖仍未創建,因此請嘗試將popup()移動到 OnViewCreated()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
popup()
}
或使用 View.post 使其進入主執行緒佇列并在其他待處理任務完成后執行
override fun onCreate(savedInstanceState: Bundle?) {
...
binding.root.post {
popup()
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/443404.html
上一篇:移動專案后訪問R資源時出錯
