Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.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
Android 通过intent发送的Double数组在接收活动中是否充满空值?_Android_Android Intent_Kotlin - Fatal编程技术网

Android 通过intent发送的Double数组在接收活动中是否充满空值?

Android 通过intent发送的Double数组在接收活动中是否充满空值?,android,android-intent,kotlin,Android,Android Intent,Kotlin,我的主要活动是一个测验,每个问题包括一个下注值和一个potSize值。测验结束后,我将从MainActivity向ResultsActivity发送两个双数组,即betSizeArray和potSizeArray,以在列表视图中显示。我在第一个活动中初始化并填充数组,并使用putExtra()将它们放入意图中。在ResultsActivity中,我使用intent.extras?.getDoubleArray(键)检索每个数组;但是,检索到的数组中充满了空值 在ResultsActivity.O

我的主要活动是一个测验,每个问题包括一个下注值和一个potSize值。测验结束后,我将从MainActivity向ResultsActivity发送两个双数组,即betSizeArray和potSizeArray,以在列表视图中显示。我在第一个活动中初始化并填充数组,并使用putExtra()将它们放入意图中。在ResultsActivity中,我使用intent.extras?.getDoubleArray(键)检索每个数组;但是,检索到的数组中充满了空值

在ResultsActivity.OnCreate()中,我第一次尝试

val betzizerray=intent.getDoubleArrayExtra(“赌注大小”)

每当我试图从BetzizerRay访问值时,这会导致NullPointerException

接下来我试着

val betzizerray=extras?.getDoubleArray(“BET\u大小”)

必须使用安全调用“?。”来获取数组并访问数组的值(例如betzizerray?.get(i))不会引发NullPointerException;但是,从数组访问的所有值都为NULL

已尝试在onCreate()内初始化MainActivity中的数组,但这只会在MainActivity中使用这些数组时导致NullPointerException

在MainActivity中创建intent并调用startActivity(intent)的函数中,我尝试初始化并填充testArrayList,以确保传递到intent的数组已填充且未充满null。但是,在ResultActivity中检索到的数组仍然充满空值。我没有在下面的代码中包含这个测试

var betSizeArray = arrayOfNulls<Double>(20)
var potSizeArray = arrayOfNulls<Double>(20)
var count = 0

var betSize = 1.0
var potSize = 1.0


class MainActivity : AppCompatActivity() {

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

//here an OnKeyListener that eventually calls setNextQuestion() is created
....
}
结果活性:


class ResultsActivity : AppCompatActivity() {

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


        val extras = intent.extras
        val betSizeArray = extras?.getDoubleArray("BET_SIZES")
        val potSizeArray = extras?.getDoubleArray("POT_SIZES")


        var listData = ArrayList<String>()
        var textData = ""

        //this loop is where the arrays are accessed.
        for( i in 0 .. 19){
            textData = "$" + betSizeArray?.get(i).toString() + 
            " into $" + potSizeArray?.get(i).toString()

            listData.add(textData)
        }

        val arrayAdapter = ArrayAdapter(
            this,
            android.R.layout.simple_list_item_1,
            listData
            )
        resultsListView.setAdapter(arrayAdapter)

        assessTextView.setText(assessment)
    }
}
在结果性方面:

        val bundle = intent.extras

        val betSizeArray = bundle?.getSerializable("BET_SIZES") as ArrayList<Double>
        val potSizeArray = bundle?.getSerializable("POT_SIZES") as ArrayList<Double>

val bundle=intent.extras
val betzizerray=bundle?.getSerializable(“BET_大小”)作为ArrayList
val potSizeArray=bundle?.getSerializable(“POT_size”)作为ArrayList
我得到一个TypeCastException:

     Caused by: kotlin.TypeCastException: null cannot be cast to non-null type kotlin.collections.ArrayList<kotlin.Double> /* = java.util.ArrayList<kotlin.Double> */
        at com.example.questgen.ResultsActivity.onCreate(ResultsActivity.kt:39)
原因:kotlin.TypeCastException:null不能强制转换为非null类型kotlin.collections.ArrayList/*=java.util.ArrayList*/
在com.example.questgen.ResultsActivity.onCreate上(ResultsActivity.kt:39)
第39行是第一个getSerializable()。因此,出于某种原因,通过intent传递的数组似乎仍然为null

        val betSizeArray = bundle?.getSerializable("BET_SIZES") as Array<Double?>?
val betzizerray=bundle?.getSerializable(“BET_大小”)作为数组?
铸造阵列?相反,它不会抛出错误,但数组仍然填充NULL


最终编辑:它正在工作!我将所有变量移动到类标题下。将阵列初始化从arrayOfNulls更改为DoubleArray(20)。去掉了很多私有方法参数,因为我现在有了有意义的类变量,并且可以访问。已从bundle.putSerializable()切换到intent.putExtra()。在ResultsActivity中,我从bundle.getSerializable()切换到intent.getDoubleArrayExtra()。我认为有某种方法可以使序列化和捆绑包工作,但这是我第一次得到结果。我想你说得对,我以前在什么地方声明过变量。谢谢你

getDoubleArrayExtra将返回一个Java
double[]
值,该值可能不包含空值。由于要使用
arrayOfNulls
方法初始化它们,因此将返回一个
Array
。当您从一个意图的附加部分检索它时,您将需要一个
数组?
,因为可能会返回一个空值

因此,您应该将它们读回为
Serializable
值(原语类型的所有Java对象表示都是
Serializable
),并将它们转换为
数组?

val extras=intent.extras
val betzizerray=extras?.getSerializable(“BET_size”)作为数组?
val potSizeArray=extras?.getSerializable(“POT_size”)作为数组?
还请注意,ResultsActivity上的Betzizerray类型将为:Serializable?,因为它可能为null(例如,不包含在捆绑包中),并且必须强制转换为所需的数组?价值观

如果这不起作用,这意味着你在主要活动中没有做正确的事情。我首先移动这些变量声明:

var betSizeArray = arrayOfNulls<Double>(20)
var potSizeArray = arrayOfNulls<Double>(20)
var count = 0

var betSize = 1.0
var potSize = 1.0
var betzizerray=arrayOfNulls(20)
var potSizeArray=arrayOfNulls(20)
变量计数=0
var betSize=1.0
变量potSize=1.0
在主活动中,如下所示:

class MainActivity : AppCompatActivity() {
    var betSizeArray = arrayOfNulls<Double>(20)
    var potSizeArray = arrayOfNulls<Double>(20)
    var count = 0

    var betSize = 1.0
    var potSize = 1.0
class MainActivity:AppCompatActivity(){
var BETSIZERRAY=arrayOfNulls(20)
var potSizeArray=arrayOfNulls(20)
变量计数=0
var betSize=1.0
变量potSize=1.0

getDoubleArrayExtra将返回一个Java
double[]
可能不包括空值。由于您使用
arrayOfNulls
方法初始化它们,将返回一个
数组
。当您从意图的附加部分检索它时,您将需要一个
数组
,因为可能会返回空值

因此,您应该将它们读回为
Serializable
值(原语类型的所有Java对象表示都是
Serializable
),并将它们转换为
数组?

val extras=intent.extras
val betzizerray=extras?.getSerializable(“BET_size”)作为数组?
val potSizeArray=extras?.getSerializable(“POT_size”)作为数组?
还请注意,ResultsActivity上的Betzizerray类型将为:Serializable?,因为它可能为null(例如,不包含在捆绑包中),并且必须强制转换为所需的Array?值

如果这不起作用,这意味着您在MainActivity中没有执行正确的操作。我首先移动这些变量声明:

var betSizeArray = arrayOfNulls<Double>(20)
var potSizeArray = arrayOfNulls<Double>(20)
var count = 0

var betSize = 1.0
var potSize = 1.0
var betzizerray=arrayOfNulls(20)
var potSizeArray=arrayOfNulls(20)
变量计数=0
var betSize=1.0
变量potSize=1.0
在主活动中,如下所示:

class MainActivity : AppCompatActivity() {
    var betSizeArray = arrayOfNulls<Double>(20)
    var potSizeArray = arrayOfNulls<Double>(20)
    var count = 0

    var betSize = 1.0
    var potSize = 1.0
class MainActivity:AppCompatActivity(){
var BETSIZERRAY=arrayOfNulls(20)
var betSizeArray = arrayOfNulls<Double>(20)
var potSizeArray = arrayOfNulls<Double>(20)
var count = 0

var betSize = 1.0
var potSize = 1.0
class MainActivity : AppCompatActivity() {
    var betSizeArray = arrayOfNulls<Double>(20)
    var potSizeArray = arrayOfNulls<Double>(20)
    var count = 0

    var betSize = 1.0
    var potSize = 1.0