如何在Android中更改按钮文本和功能?

时间:2017-06-01 13:24:01

标签: android android-intent kotlin

我是Android初学者。这是我想要做的。我有一个带有三个按钮的活动UI。第二个活动是相同的,但按钮文本和操作是不同的。当在第一个活动上单击按钮时,不是让它切换意图或活动,我可以编码按钮在单击时更改吗?这样我就不需要第二个相同的UI。

三个按钮是Login,SignUp和Tour。点击Login或Tour时,我确实希望他们启动不同的活动。但对于" SignUp"这是UI相同的,包含相同的按钮但不同的文本,并将启动不同的意图。我的目标是消除这个相同的用户界面,只需在"注册"点击。

这是我当前的代码,它只是在点击时启动新的意图。我不知道从哪里开始获得我想要的功能。任何帮助表示赞赏。感谢。

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.content.Intent
import android.support.v4.content.ContextCompat.startActivity

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    fun login(view: View) {
        val myIntent = Intent(this@MainActivity, LoginActivity::class.java)
        this@MainActivity.startActivity(myIntent)
    }

    fun signUpAs(view: View) {
        val myIntent = Intent(this@MainActivity, SignUpAsActivity::class.java)
        this@MainActivity.startActivity(myIntent)
    }

    fun tour(view: View) {
        val myIntent = Intent(this@MainActivity, TourActivity::class.java)
        this@MainActivity.startActivity(myIntent)
    }

    override fun onWindowFocusChanged(hasFocus: Boolean) {
        super.onWindowFocusChanged(hasFocus)
        if (hasFocus) {
            val decorView = window.decorView
            decorView.setSystemUiVisibility(
                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)
        }
    }

}

2 个答案:

答案 0 :(得分:0)

我建议您保留用于登录的代码并在不同的活动或片段中注册(现在的方式)。如果您想要消除UI重复,请考虑使用三个按钮创建单独的布局(简单方法)或自定义视图(更高级的方法)。

这是一个例子。

<强> RES /布局/ layout_buttons_menu.xml

  <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <Button
        android:id="@+id/button1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Button1" />

    <Button
        android:id="@+id/button2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Button2" />

    <Button
        android:id="@+id/button3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Button3" />
</LinearLayout>

<强> RES /布局/ activity_login.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="wrap_content">

    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="Name" />

    <EditText
        android:id="@+id/password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:ems="10"
        android:inputType="textPassword" />

   <include layout="@layout/layout_buttons_menu" />
</LinearLayout>

include 标记将允许您重用UI组件。官方文件here

在您的活动中,您可以通用方式访问这些按钮

 @Override
 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login)
        val button1 = findViewById(R.id.button1) as Button
 }

答案 1 :(得分:0)

SignUpAsActivity设置布局到R.layout.activity_main。

  

的setContentView(R.layout.activity_main)

获取必需按钮并动态设置文本或任何其他必需属性。

Button mButton=(Button)findViewById(R.id.mybutton);
mButton.setText("MyButton");

提示:您可以使用合成属性来摆脱findviewbyid:https://kotlinlang.org/docs/tutorials/android-plugin.html