java - Android onTouchListener,更简单的实现方式

标签 java android

嗯,我有 16 个按钮。我想找到一种更简单的方法将它们添加到 onTouch 监听器,我是 Android/java 的新手,所以我不确定什么会起作用。这是我现在的代码。

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main)

.

    Button btn_main1 = (Button) findViewById(R.id.cmd_main1);
    Button btn_main2 = (Button) findViewById(R.id.cmd_main2);
    Button btn_main3 = (Button) findViewById(R.id.cmd_main3);
    Button btn_main4 = (Button) findViewById(R.id.cmd_main4);
    Button btn_main5 = (Button) findViewById(R.id.cmd_main5);
    Button btn_main6 = (Button) findViewById(R.id.cmd_main6);
    Button btn_main7 = (Button) findViewById(R.id.cmd_main7);
    Button btn_main8 = (Button) findViewById(R.id.cmd_main8);
    Button btn_main9 = (Button) findViewById(R.id.cmd_main9);
    Button btn_main10 = (Button) findViewById(R.id.cmd_main10);
    Button btn_main11 = (Button) findViewById(R.id.cmd_main11);
    Button btn_main12 = (Button) findViewById(R.id.cmd_main12);
    Button btn_main13 = (Button) findViewById(R.id.cmd_main13);
    Button btn_main14 = (Button) findViewById(R.id.cmd_main14);
    Button btn_main15 = (Button) findViewById(R.id.cmd_main15);
    Button btn_main16 = (Button) findViewById(R.id.cmd_main16);


    btn_main1.setOnTouchListener(tListener1);
    btn_main2.setOnTouchListener(tListener1);
    btn_main3.setOnTouchListener(tListener1);
    btn_main4.setOnTouchListener(tListener1);
    btn_main5.setOnTouchListener(tListener1);
    btn_main6.setOnTouchListener(tListener1);
    btn_main7.setOnTouchListener(tListener1);
    btn_main8.setOnTouchListener(tListener1);
    btn_main9.setOnTouchListener(tListener1);
    btn_main10.setOnTouchListener(tListener1);
    btn_main11.setOnTouchListener(tListener1);
    btn_main12.setOnTouchListener(tListener1);
    btn_main13.setOnTouchListener(tListener1);
    btn_main14.setOnTouchListener(tListener1);
    btn_main15.setOnTouchListener(tListener1);
    btn_main16.setOnTouchListener(tListener1);
}

显然,这是一种糟糕的方式。我确定有一种方法可以进行某种循环,或者将按钮放在数组中或其他东西中。非常感谢任何有助于缩短这段时间的帮助!

最佳答案

另一种方法是使用代码而不是 XML 添加按钮。

但是,只是为了清理该代码...

int[] buttonIds = new int[]{R.id.cmd_main1, R.id.cmd_main2}; // and so on

for(int buttonId : buttonIds) {
    Button b = (Button)findViewById(buttonId);
    b.setOnTouchListener(tListener1);
}

此外,onClickListener 可能更简洁,具体取决于您希望按钮执行的操作。然后您还可以在 XML 中指定 onClickListener:

<Button android:onClick="myClickHandler" />

并在 Activity 中,添加相应的方法:

class MyActivity extends Activity {
public void myClickHandler(View target) {
    // Do stuff
    }
}

关于java - Android onTouchListener,更简单的实现方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5034742/

相关文章:

java编辑器和代码折叠

java - 如何预览 TextView?

java - 为 REST API 生成 Swagger UI 文档

java - 每次调用 HashMap.entrySet() 都会实例化并填充一个新集合吗?

android - 调用完成()后保证调用哪些android生命周期方法?

Android 进程即使在 BroadcastRexceiver 执行后也不会终止

java - @RequestBody 中的 Spring 映射枚举

android - 如何在android上编译glib

android - 如何修复 gradle 任务 ':app:mergeDebugJniLibFolders' in flutter gradle build for opencv native with NDK?

android - 认证问题,所以我想信任所有应用程序