在 Kotlin 中从其他 activity 开始 activity。它在加载前崩溃 xml

Start activity from other activity in Kotlin. It crashes before loading xml

在Kotlin中,在loginButton.setOnClickListener函数中,以下代码可以启动ProfileActivity;

  val intent=Intent(this@LoginActivity, ProfileActivity::class.java)
                            startActivity(intent)
                            finish()

从ProfileActivity,以下代码可以启动TestActivity;

 val intent=Intent(this@ProfileActivity, TestActivity::class.java)
                            startActivity(intent)
                            finish()

但是,我想从 LoginActivity 启动 TestActivity。因此,我通过仅更改 activity 名称来更新代码,代码如下:

 val intent=Intent(this@LoginActivity, TestActivity::class.java)
                            startActivity(intent)
                            finish()

但是,应用程序在加载前崩溃 activity_test.xml。为什么?

ProfileActivity.kt中的class是;

class profileActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_profile)

    }
}

TestActivity.kt中的class是;

class TestActivity : AppCompatActivity() {

    private val QUANT = false
    private val LABEL_PATH = "labels.txt"
    private val INPUT_SIZE = 224 
 
    @RequiresApi(Build.VERSION_CODES.O)
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        if (savedInstanceState != null) {  
            var strResultUri: String? = null
            strResultUri = savedInstanceState.getString(strResultUri)  
          } else { 

            setContentView(R.layout.activity_test) 

            textViewResult = findViewById(R.id.textViewResult)
            textViewResult?.setMovementMethod(ScrollingMovementMethod())
        }
}
}

很可能是您的这些行导致了问题:

var strResultUri: String? = null
strResultUri = savedInstanceState.getString(strResultUri)

因为您将 strResultUri 空值作为参数传递给 getString 方法 应该是这样的:

strResultUri = savedInstanceState.getString("yourKey")
var strResultUri: String? = null
strResultUri = savedInstanceState.getString(strResultUri)

你到底在这里做什么?在 savedInstanceState.getString() 方法中传递空值?

另外,你说的只改名字是什么意思?您的意思是您只是更改了以下代码中的上下文?

val intent=Intent(this@LoginActivity, TestActivity::class.java)
startActivity(intent)
finish()

该代码肯定可以在登录 activity 中使用。

还有,是不是打错了。 profileActivity。那是驼峰式大小写(不是公认的惯例),您调用 ProfileActivity::class.java。这不应该工作。如果只是错别字,请忽略。