java - 可以使用 xml 属性 onClick ="click"更改按钮文本,而无需创建按钮对象

标签 java android xml android-studio

我是android应用程序开发的初学者,我看到有两种方法来处理按钮点击。 第一个是使用 setOnClickListener,第二个是使用 xml 属性 onClick

onClick xml 属性对于初学者/我来说非常容易。

我可以通过创建按钮对象来更改按钮文本,然后: btn.setText("Button Clicked");

但我的问题是我可以使用 setText、isEnabled 等按钮方法而不创建其对象吗?

无需创建按钮对象或使用 XML 属性 onClick 即可更改按钮文本。

最佳答案

  1. 在您的 build.gradle(模块:app)中添加以下内容:
android {
    buildFeatures{
        dataBinding = true
    }
}
  • 在您的字符串资源 (res/values/strings.xml) 中添加以下内容:
  • <resources>
        <string name="button_clicked">Button Clicked</string>
    </resources>
    
  • activity_main.java中:
  • <?xml version="1.0" encoding="utf-8"?>
    <layout xmlns:android="http://schemas.android.com/apk/res/android">
        <data>
            <import type="com.example.myapplication.R"/>
        </data>
    
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
            <Button
                android:id="@+id/button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="@{()->button.setText(R.string.button_clicked)}"/>
    
        </FrameLayout>
    </layout>
    

    这将允许您在没有按钮实例的情况下更改按钮文本。但我认为这不是最佳方法,标准 setOnClickListener 是更好的方法。


    另一种方法

    1. activity_main.xml:
    <?xml version="1.0" encoding="utf-8"?>
    <layout xmlns:android="http://schemas.android.com/apk/res/android">
        <data>
            <variable
                name="buttonClicked"
                type="java.lang.String"
                />
        </data>
    
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
            <Button
                android:id="@+id/button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="@{()-> button.setText(buttonClicked)}"/>
            
        </FrameLayout>
    </layout>
    
  • MainActivity.java:
  • import androidx.appcompat.app.AppCompatActivity;
    import androidx.databinding.DataBindingUtil;
    
    import android.os.Bundle;
    
    import com.example.myapplication.databinding.ActivityMainBinding;
    
    public class MainActivity extends AppCompatActivity
    {
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
    
            binding.setButtonClicked("Button clicked");
        }
    }
    

    关于java - 可以使用 xml 属性 onClick ="click"更改按钮文本,而无需创建按钮对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63842991/

    相关文章:

    Java类接口(interface)设计题

    android - 删除自定义 ListView 中的多个选定项目不适用于 ImageButton

    java - 在客户端应用程序中声明 REST 服务 api 端点的正确模式?

    ruby-on-rails - Rails RESTful to_xml - 如何实现连接?

    xml - magento 中的新模块不更新布局

    java - 如何在 intellij 中强制静态变量的所有大写字母?

    java - 复杂 Java 模型的 JUnit 测试

    java - 从列表中删除第一项?

    android - 是否可以从 AsyncTask 内部调用另一个函数?

    xml - 什么是用 grails 制作 XML 的好方法