首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我的Android Studio (Kotlin)在预览中显示Android手机的布局,而不是在Build App中?

为什么我的Android Studio (Kotlin)在预览中显示Android手机的布局,而不是在Build App中?
EN

Stack Overflow用户
提问于 2019-02-13 18:58:15
回答 2查看 594关注 0票数 3

我在Android Studio中做了一个简单的应用程序。我在XML布局文件中使用了两个TextViews和一个按钮。textview和Button都显示在预览中,但在Build Apk中只显示Button。它没有给出任何错误。我不知道是什么问题,我尝试了所有可能的方法来解决它,但没有得到任何东西。

activity_home XML代码

代码语言:javascript
复制
    <?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代码

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
<?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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-13 20:30:48

而不是这些行

代码语言:javascript
复制
var email_user = textViewSendEmail.text
var password_user = textViewSendPassword.text

使用这个

代码语言:javascript
复制
var email_user = textViewSendEmail.text.toString()
var password_user = textViewSendPassword.text.toString()

此外,您还必须在onclick中调用这些行,因此代码必须如下所示

代码语言:javascript
复制
 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)作为高度

票数 1
EN

Stack Overflow用户

发布于 2019-02-13 20:39:55

你的问题在于你如何放置额外的东西。在MainActivity中,您可以将您的数据作为意图的额外内容。但在SecondActivity中,您会尝试从intent的捆绑包中获取数据。

改变这一点

代码语言:javascript
复制
var bundle : Bundle? = intent.extras
var emailData = bundle!!.getString("email")
var passwordData = bundle.getString("password")

为此

代码语言:javascript
复制
var emailData = intent.getStringExtra("email")
var passwordData = intent.getStringExtra("password")`

或者您可以将数据放入MainActivity中的捆绑包中,然后将此捆绑包放入intent。然后获取数据,就像对当前解决方案所做的那样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54668552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档