【问题标题】:Start activity from other activity in Kotlin. It crashes before loading xml从 Kotlin 中的其他活动开始活动。它在加载 xml 之前崩溃
【发布时间】:2020-07-27 13:45:41
【问题描述】:

在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。因此,我只更改了活动名称来更新代码,代码如下:

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

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

ProfileActivity.kt 中的类是;

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

    }
}

TestActivity.kt 中的类是;

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())
        }
}
}

【问题讨论】:

标签: android xml kotlin start-activity


【解决方案1】:
var strResultUri: String? = null
strResultUri = savedInstanceState.getString(strResultUri)

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

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

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

该代码肯定会在登录活动中运行。

另外,这是一个打字错误。 profileActivity。那是骆驼案(不是公认的约定),你打电话给ProfileActivity::class.java。这不应该工作。如果只是拼写错误,请忽略它。

【讨论】:

    【解决方案2】:

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

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

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

    strResultUri = savedInstanceState.getString("yourKey")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多