我是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)
}
}
}
答案 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