【发布时间】:2021-04-03 08:30:18
【问题描述】:
我是移动开发的新手。我正在尝试将参数从一个活动传递到另一个活动。但在第二个活动中,由于类型不匹配,我无法使用它。我把它当作字符串,但我应该把它用作 TextView。你能说我哪里做错了吗?
第一个活动
class ShowProfileActivity : AppCompatActivity() {
private lateinit var fullnameTv: TextView
private lateinit var nicknameTv: TextView
private lateinit var locationTv: TextView
private lateinit var emailTv: TextView
private lateinit var bioTv: TextView
// todo load from sp
private val mockUser: User? = User("test ", "test", "test@gmail.com", "Italy", "test, this is a mocked bio")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_show_profile)
fullnameTv = findViewById(R.id.asp_user_name_tv)
nicknameTv = findViewById(R.id.asp_user_nickname_tv)
locationTv = findViewById(R.id.asp_user_location_tv)
emailTv = findViewById(R.id.asp_user_email_tv)
bioTv = findViewById(R.id.asp_user_bio_tv)
// init views with user data
fullnameTv.text = mockUser?.fullname
nicknameTv.text = mockUser?.nickname
locationTv.text = mockUser?.location
emailTv.text = mockUser?.email
bioTv.text = mockUser?.bio
var editButton = findViewById<ImageButton>(R.id.editBtn);
editButton.setOnClickListener {
editProfile();
}
}
fun editProfile() {
val intent = Intent(this@ShowProfileActivity,EditProfileActivity::class.java)
if (mockUser != null) {
intent.putExtra("group23.lab1.user_fullname", mockUser.fullname)
intent.putExtra("group23.lab1.user_nickname", mockUser.nickname)
intent.putExtra("group23.lab1.user_location", mockUser.location)
intent.putExtra("group23.lab1.user_email", mockUser.email)
intent.putExtra("group23.lab1.user_bio", mockUser.bio)
}
startActivity(intent)
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.show_profile_menu, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.menu_show_profile_edit -> {
/*
TODO start edit profile activity (check activity name)
val intent = Intent(this, com.group23.lab1.EditProfileActivity::class.java).apply {
if (mockUser != null) {
putExtra("group23.lab1.user_fullname", mockUser.fullname)
putExtra("group23.lab1.user_nickname", mockUser.nickname)
putExtra("group23.lab1.user_location", mockUser.location)
putExtra("group23.lab1.user_email", mockUser.email)
putExtra("group23.lab1.user_bio", mockUser.bio)
}
}
startActivityForResult(intent)
*/
Toast.makeText(this, "OPEN EDIT PROFILE", Toast.LENGTH_SHORT).show()
true
}
else -> super.onOptionsItemSelected(item)
}
}
}
第二个活动
class EditProfileActivity : AppCompatActivity() {
private lateinit var fullnameTv: TextView
private lateinit var nicknameTv: TextView
private lateinit var locationTv: TextView
private lateinit var emailTv: TextView
private lateinit var bioTv: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_edit_profile)
val intent = intent
fullnameTv = intent.getStringExtra("group23.lab1.user_fullname") //Type miss match error required textView but got String ??
print(fullnameTv+" testt");
}
}
【问题讨论】:
-
为什么要将 TextView 传递给 SecondActivity?
标签: android kotlin android-intent