【问题标题】:Passing values from another activity to out of onCreate将值从另一个活动传递到 onCreate
【发布时间】:2020-04-03 08:38:11
【问题描述】:

我正在尝试创建一个棋盘游戏,并希望将棋盘大小的数字传递给另一个活动。


    val colRow =return intent.getIntExtra(EXTRA_COLROW,0)

    private val boardCells = Array(colRow) { arrayOfNulls<Button>(colRow) }

    var board = Board(colRow)

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)


        }

出现下面的错误信息

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“int android.content.Intent.getIntExtra(java.lang.String, int)”

我尝试将意图代码放入函数中,但效果不佳

    val colRow =getColrow()

    fun getColrow():Int{
        return intent.getIntExtra(EXTRA_COLROW,0)
    }

意图 getExtra 是否仅在 onCreate 方法中起作用?如果是这样,我如何将值传递到 oncreate 之外? 请帮帮我。

【问题讨论】:

    标签: android kotlin


    【解决方案1】:

    尝试使用EventBus框架

    简化组件之间的通信

    分离事件发送者和接收者

    在活动、片段和后台线程中表现良好

    避免复杂且容易出错的依赖关系和生命周期问题

    让你的代码更简单

    【讨论】:

    • 感谢您的建议。但抱歉我只是一个初学者,我不明白如何在 Android Studio 中使用它。我稍后试试
    【解决方案2】:

    将额外的值保存到变量中

    private lateinit val colRow: Int
    private lateinit val boardCells: Array
    private lateinit val board: Board
    
    override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_main)
         colRow = intent.getIntExtra(EXTRA_COLROW,0)
         initBoard()
    }
    
    private fun initBoard(){
         boardCells = Array(colRow) { arrayOfNulls<Button>(colRow) }
         board = Board(colRow)
    }
    

    在该活动中的任何地方使用它。

    【讨论】:

    • 感谢您帮助我,但很抱歉代码不起作用。有一个建议,它更改为“private lateinit val colRow: Int”=>“private var colRow by Delegates.notNull()”,但它仍然不起作用,显示相同的错误消息。
    • 你在 onCreate 方法中使用这条线 colRow = intent.getIntExtra(EXTRA_COLROW,0) 对吗?
    • 是的。也出现在"private lateinit var boardCells:Array" Array需要
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 2017-12-10
    • 2012-07-05
    • 2015-01-14
    相关资源
    最近更新 更多