在 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
。这不应该工作。如果只是错别字,请忽略。
在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
。这不应该工作。如果只是错别字,请忽略。