我正在开发一个Android应用程序。
并且activity_main.xml中有一个TextView。
如何在任何地方(例如另一个片段、另一个活动等)更改此 TextView 中的文本?
这是我第一次在这里回答,所以请原谅我任何过度/不足的分享,但实际上我刚刚上了一堂关于 Android 开发的课程。
我们知道 Java 是一种面向对象的编程语言,我们也知道 .xml 和设计选项卡中的每个片段都是 Android Studio 中内置的 View 类的子级。
如果你想从你的代码或另一个片段访问片段(这仍然在java代码中完成),你只需要创建一个片段类型的对象(在本例中为TextView)。
例如: TextView 文本 = (TextView)findViewById(R.id.Fragment 的 ID);
从那里,您可以简单地说出类似 text.setText() 的内容来更改代码中的文本或与其他片段的行为相关的条件。
希望这有帮助!
为此,您必须考虑的是您的框架位于您已实现更改文本功能的活动内。
活动
class MainActivity2 : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
fun setNewText(text: String) {
val textView = findViewById<TextView>(R.id.title)
textView.text = text
}
}
活动 XML
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity2">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.fragment.app.FragmentContainerView
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/title" />
</androidx.constraintlayout.widget.ConstraintLayout>
碎片
class BlankFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_blank, container, false)
}
override fun onStart() {
super.onStart()
val activity = requireActivity() as MainActivity2
activity.setNewText("New Text")
}
companion object {
@JvmStatic
fun newInstance() = BlankFragment()
}
}
这将是您的解决方案的示例,只需将片段放入 FragmentContainer 中即可。