我在Android Studio中做了一个简单的应用程序。我在XML布局文件中使用了两个TextViews和一个按钮。textview和Button都显示在预览中,但在Build Apk中只显示Button。它没有给出任何错误。我不知道是什么问题,我尝试了所有可能的方法来解决它,但没有得到任何东西。
activity_home XML代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="mnail"
android:id="@+id/editText"/>
<EditText
android:id="@+id/textViewSendEmail"
android:layout_width="344dp"
android:layout_height="44dp"
android:hint="Email"
android:layout_centerHorizontal="true"
android:layout_marginTop="40dp"/>
<EditText
android:id="@+id/textViewSendPassword"
android:layout_width="344dp"
android:layout_height="44dp"
android:hint="Password"
android:layout_centerHorizontal="true"
android:layout_marginTop="40dp"
android:layout_below="@+id/textViewSendEmail"/>
<Button
android:id="@+id/sendButton"
android:layout_width="344dp"
android:layout_height="44dp"
android:text="send"
android:layout_centerHorizontal="true"
android:layout_marginTop="40dp"
android:layout_below="@+id/textViewSendPassword"/>
</LinearLayout>
MainActivity代码
package com.kotlinintent
import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_home.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home)
var email_user = textViewSendEmail.text
var password_user = textViewSendPassword.text
sendButton.setOnClickListener {
intent = Intent(this, SecondActvity::class.java)
intent.putExtra("email", email_user)
intent.putExtra("password", password_user)
startActivity(intent)
}
}
}
SecondActivity
package com.kotlinintent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_second.*
class SecondActvity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
var bundle : Bundle? = intent.extras
var emailData = bundle!!.getString("email")
var passwordData = bundle.getString("password")
textViewEmail.text = emailData
textViewPassword.text = passwordData
}
}
第二个活动XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SecondActvity">
<TextView
android:id="@+id/textViewEmail"
android:layout_width="match_parent"
android:layout_height="44dp"
android:text="Email"/>
<TextView
android:id="@+id/textViewPassword"
android:layout_width="match_parent"
android:layout_height="44dp"
android:text="Password"
android:layout_marginTop="40dp"
/>
<Button
android:id="@+id/getButton"
android:layout_width="match_parent"
android:layout_height="44dp"
android:text="get"
android:layout_marginTop="40dp"
/>
</LinearLayout>
发布于 2019-02-13 20:30:48
而不是这些行
var email_user = textViewSendEmail.text
var password_user = textViewSendPassword.text
使用这个
var email_user = textViewSendEmail.text.toString()
var password_user = textViewSendPassword.text.toString()
此外,您还必须在onclick中调用这些行,因此代码必须如下所示
sendButton.setOnClickListener {
var email_user = textViewSendEmail.text.toString()
var password_user = textViewSendPassword.text.toString()
intent = Intent(this, SecondActvity::class.java)
intent.putExtra("email", email_user)
intent.putExtra("password", password_user)
startActivity(intent)
}
我建议使用wrap_content
而不是静态大小(44dp
)作为高度
发布于 2019-02-13 20:39:55
你的问题在于你如何放置额外的东西。在MainActivity中,您可以将您的数据作为意图的额外内容。但在SecondActivity中,您会尝试从intent的捆绑包中获取数据。
改变这一点
var bundle : Bundle? = intent.extras
var emailData = bundle!!.getString("email")
var passwordData = bundle.getString("password")
为此
var emailData = intent.getStringExtra("email")
var passwordData = intent.getStringExtra("password")`
或者您可以将数据放入MainActivity中的捆绑包中,然后将此捆绑包放入intent。然后获取数据,就像对当前解决方案所做的那样。
https://stackoverflow.com/questions/54668552
复制相似问题