如何更改android中小部件按钮的文本

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

我对 Android 很陌生,想制作一个简单的待办事项列表小部件

小部件按钮上的文本不会改变。 活动启动,但是一旦我在文本字段中输入内容,文本字段中的文本就不会存储在按钮中

这是我当前的代码,位于单击所述按钮时启动的活动的 onCreate 乐趣中

inside mainactivity.kt

val remoteViews: RemoteViews = RemoteViews("com.example.noteswidget", R.layout.widget)
remoteViews.setTextViewText(R.id.appwidget_Button,it.text)
inside widget.xml
<Button
        android:id="@+id/appwidget_Button"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="top"
        android:text="@string/appwidget_text" /> 

我对Android很陌生,我可能犯了一些菜鸟错误

android android-widget
1个回答
0
投票

根据您的代码,我不知道为什么您的逻辑是这样的。我会给你示例代码。 activity_main.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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/text_print"
        android:layout_width="match_parent"
        android:layout_marginHorizontal="16dp"
        android:layout_marginTop="16dp"
        android:textSize="16sp"
        android:layout_height="wrap_content"
        tools:text="Sample"/>

    <Button
        android:id="@+id/btn_click"
        android:layout_width="match_parent"
        android:layout_marginTop="16dp"
        android:layout_height="wrap_content"
        android:text="Click it"/>

</LinearLayout>

然后在MainActivity.kt

class MainActivity : AppCompatActivity() {

    //first init
    private lateinit var btnClick: Button
    private lateinit var textPrint: TextView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_main)
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }

        //assign variable with value
        btnClick = findViewById<Button>(R.id.btn_click)
        textPrint = findViewById<TextView>(R.id.text_print)

        //do actions
        btnClick.setOnClickListener {
            textPrint.text = btnClick.text
        }

    }
}

在上面的示例中,如果您使用的话,有几种类型

findViewById

  1. 创建组件的变量名称
  2. 使用
    findViewById
  3. 将变量与 xml 文件绑定
  4. 做动作

在该示例中,当单击按钮时,文本视图将显示按钮中的文本。

但是,我建议你可以学习一下ViewBinding,以便更好的开发。因为这对你很有帮助,让你的工作更有效率。很高兴编码:)

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