Почему в Android Studio (Kotlin) отображается макет телефона Android в Preview, а не в приложении Build? - PullRequest
0 голосов
/ 13 февраля 2019

Я сделал простое приложение в Android Studio.Я взял два TextViews и одну кнопку в файле макета XML.И текстовое представление, и кнопка отображаются в предварительном просмотре, но в Build Apk есть только кнопка, показывающая.Это не дает никакой ошибки.Я не знаю, в чем проблема. Я перепробовал все возможные способы ее устранения, но ничего не получил.

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>

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Ваша проблема в том, как вы ставите дополнения.В MainActivity вы помещаете свои данные в качестве дополнений для намерения.Но в SecondActivity вы пытаетесь получить данные из пакета намерения.

Измените это 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")

Или вы можете поместить данные в Bundle в MainActivity,затем поместите этот комплект в намерение.А затем получите данные, как вы делаете с вашим текущим решением.

0 голосов
/ 13 февраля 2019

Вместо этих строк

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) для высоты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...