Android Studio —— 按钮点击事件

实例

     功能:点击按钮显示/隐藏进度条

     效果

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical">

    <ProgressBar
        android:id="@+id/progressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </ProgressBar>

    <Button
        android:id="@+id/UserButton"
        android:layout_width="110dp"
        android:layout_height="40dp"
        android:text="显示或隐藏进度条"
        android:textSize="10dp"
        android:onClick="ButtonClick">
    </Button>

</LinearL





package com.example.application;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button UserButton = findViewById(R.id.UserButton);
        if(UserButton != null) {
            UserButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    ProgressBar progressBar = findViewById(R.id.progressBar);
                    if (progressBar != null) {
                        if(progressBar.getVisibility() == View.GONE){
                            progressBar.setVisibility(View.VISIBLE);
                        }
                        else{
                            progressBar.setVisibility(View.GONE);
                        }
                    }
                }
            });
        }
    }
}


举例

     点击按钮,打印输入框内容

// 找到按钮
Button UserButton = findViewById(R.id.UserButton);
if(UserButton != null) {
	
	// 监听按钮点击事件
    UserButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

			// 查找用户输入框
            EditText UserTextEdit = findViewById(R.id.UserTextEdit);
            if (UserTextEdit != null) {

				// 获取输入框内容并打印输出
                String UserTextEditText = UserTextEdit.getText().toString();
                Log.e("JXD", "输入的用户名是:"+UserTextEditText );
            }
        }
    });
}

关注

笔者 - jxd

微信公众号搜索 “码农总动员” 或 微信扫描下方二维码,了解更多你不知道的XX,O(∩_∩)O

在这里插入图片描述

### 实现 Android Studio 中的按钮点击事件Android 开发中,`Button` 是一种常见的 UI 控件,继承自 `TextView` 类[^1]。通过设置监听器可以捕获用户的点击操作并执行相应的逻辑。 #### 使用 Kotlin 实现按钮点击事件 以下是一个完整的示例,展示如何在 Activity 或 Fragment 中处理按钮点击事件: ```kotlin import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.example.settingsui.SettingsUI // 假设这是自定义库的一部分 import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) SettingsUI<MainActivity>().setContentView(this) // 获取按钮实例 val button = findViewById<Button>(R.id.my_button) // 设置点击事件监听器 button.setOnClickListener { showToast("Button clicked!") } } private fun showToast(message: String) { android.widget.Toast.makeText(this, message, android.widget.Toast.LENGTH_SHORT).show() } } ``` 上述代码展示了如何通过 `setOnClickListener` 方法为按钮绑定点击事件监听器[^2]。当用户点击按钮时,会触发回调函数中的逻辑,在本例中显示一条 Toast 提示消息。 #### 在 Fragment 中实现按钮点击事件 如果是在 Fragment 中使用按钮,则可以通过依赖注入框架(如 ButterKnife)简化视图绑定过程[^3]。下面是一段基于 ButterKnife 的代码片段: ```java public class ExampleFragment extends Fragment { @BindView(R.id.button_submit) Button submitButton; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_example, container, false); ButterKnife.bind(this, rootView); submitButton.setOnClickListener(v -> { Toast.makeText(getContext(), "Submit button clicked!", Toast.LENGTH_SHORT).show(); }); return rootView; } @Override public void onDestroyView() { super.onDestroyView(); ButterKnife.unbind(this); } } ``` 此方法利用了 ButterKnife 库自动完成视图查找和解绑工作,从而减少手动编写样板代码的需求。 #### 自定义接口方式 (适用于更复杂的场景)[^4] 对于某些特定需求,可能需要定义自己的回调机制来响应组件状态变化。例如,提供一个激活回调供外部调用者注册: ```c typedef struct MySourceConfig { void (*activate)(void *data); } MySourceConfig; // 定义实际行为 static void onActivate(void *data) { printf("Source activated!\n"); } MySourceConfig config = { .activate = onActivate }; config.activate(NULL); // 调用 activate 函数指针 ``` 尽管这属于 C/C++ 领域的内容,但它体现了灵活设计的重要性——即使切换到其他编程环境也能借鉴这种思路构建类似的交互模型。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信必诺

嗨,支持下哥们呗。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值