如何在该应用程序项目的任何位置更改activity_main.xml中TextView中的文本?

问题描述 投票:0回答:2

我正在开发一个Android应用程序。

并且activity_main.xml中有一个TextView。

如何在任何地方(例如另一个片段、另一个活动等)更改此 TextView 中的文本?

java android kotlin
2个回答
0
投票

这是我第一次在这里回答,所以请原谅我任何过度/不足的分享,但实际上我刚刚上了一堂关于 Android 开发的课程。

我们知道 Java 是一种面向对象的编程语言,我们也知道 .xml 和设计选项卡中的每个片段都是 Android Studio 中内置的 View 类的子级。

如果你想从你的代码或另一个片段访问片段(这仍然在java代码中完成),你只需要创建一个片段类型的对象(在本例中为TextView)。

例如: TextView 文本 = (TextView)findViewById(R.id.Fragment 的 ID);

从那里,您可以简单地说出类似 text.setText() 的内容来更改代码中的文本或与其他片段的行为相关的条件。

希望这有帮助!


0
投票

为此,您必须考虑的是您的框架位于您已实现更改文本功能的活动内。

活动

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 中即可。

© www.soinside.com 2019 - 2024. All rights reserved.