有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java onclick方法不存在错误?

这是对错误的描述

onClick处理程序名称中不应包含空格onClick属性值应为该视图上下文中要在单击视图时调用的方法的名称。此名称必须对应于只接受一个View类型参数的公共方法。必须是字符串值,使用“\;”转义unicode字符的“\n”或“\uxxx”等字符

btnClick = (Button) findViewById(R.id.button2);
txtBox1 = (EditText) findViewById(editText9);
txtBox2 = (EditText) findViewById(editText10);



btnClick.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

        String input1 = txtBox1.getText().toString();
        byte[] bytes = input1.getBytes();
        final StringBuilder binary = new StringBuilder();
        for (byte b : bytes) {
            int val = b;
            for (int i = 0; i < 8; i++) {
                binary.append((val & 128) == 0 ? 0 : 1);
                val <<= 1;
            }
            binary.append(' ');
            txtBox2.setText(binary);
        }

btnClick = (Button) findViewById(R.id.button3);

        btnClick.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                    ClipboardManager clipboard = (ClipboardManager)              
getSystemService(Context.CLIPBOARD_SERVICE);
                String text = txtBox2.getText().toString();
                ClipData clip = ClipData.newPlainText("text", text);
                clipboard.setPrimaryClip(clip);
                Toast.makeText(getApplicationContext(), "Text Copied",
                        Toast.LENGTH_SHORT).show();

            }


        });


        txtBox2 = (EditText) findViewById(editText10);
        txtBox1 = (EditText) findViewById(editText9);
        btnClick = (Button) findViewById(R.id.button5);

        btnClick.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){

                txtBox2.setText("");
                txtBox1.setText("");
            }
        });

        btnClick.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){

                txtBox2.setText("");
                String s = new String(binary);
                txtBox1.setText(s);
            }
        });

共 (4) 个答案

  1. # 1 楼答案

    您需要创建不同的按钮变量名称和ID

    例如

     protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mContext = this;
        mActivity = this;
    
        btnClick1 = (Button) findViewById(R.id.button1);
        btnClick2 = (Button) findViewById(R.id.button2);
        btnClick3 = (Button) findViewById(R.id.button3);
        btnClick4 = (Button) findViewById(R.id.button4);
        txtBox1 = (EditText) findViewById(editText9);
        txtBox2 = (EditText) findViewById(editText10);
    
    
        btnClick1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String input1 = txtBox1.getText().toString();
                    byte[] bytes = input1.getBytes();
                    final StringBuilder binary = new StringBuilder();
                    for (byte b : bytes) {
                        int val = b;
                        for (int i = 0; i < 8; i++) {
                            binary.append((val & 128) == 0 ? 0 : 1);
                            val <<= 1;
                        }
                        binary.append(' ');
                        txtBox2.setText(binary);
                    }
                }
            });
            btnClick2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    ClipboardManager clipboard = (ClipboardManager)
                            getSystemService(Context.CLIPBOARD_SERVICE);
                    String text = txtBox2.getText().toString();
                    ClipData clip = ClipData.newPlainText("text", text);
                    clipboard.setPrimaryClip(clip);
                    Toast.makeText(getApplicationContext(), "Text Copied",
                            Toast.LENGTH_SHORT).show();
    
                }
            });
            btnClick3.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    txtBox2.setText("");
                    txtBox1.setText("");
                }
            });
            btnClick4.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    txtBox2.setText("");
                    String s = new String(binary);
                    txtBox1.setText(s);
                }
            });
    }
    

    看看这个

  2. # 2 楼答案

    只需对xml中的不同按钮ids使用different Button variables,不要使用相同的按钮名称来调用onClick方法
    例如:

    Button btnClick,btnClick1,btnClick2;
    

    欲了解更多信息,请访问此link.

  3. # 3 楼答案

    您对不同的3按钮使用了相同的名称btnClick。也许这就是问题所在。使用不同的名称

  4. # 4 楼答案

    您尚未关闭OnClickListener接口。 改变

    btnClick.setOnClickListener(new View.OnClickListener() {
    
        @Override
        public void onClick(View v) {
    
            String input1 = txtBox1.getText().toString();
            byte[] bytes = input1.getBytes();
            final StringBuilder binary = new StringBuilder();
            for (byte b : bytes) {
                int val = b;
                for (int i = 0; i < 8; i++) {
                    binary.append((val & 128) == 0 ? 0 : 1);
                    val <<= 1;
                }
                binary.append(' ');
                txtBox2.setText(binary);
            }
    

    btnClick.setOnClickListener(new View.OnClickListener() {
    
        @Override
        public void onClick(View v) {
    
            String input1 = txtBox1.getText().toString();
            byte[] bytes = input1.getBytes();
            final StringBuilder binary = new StringBuilder();
            for (byte b : bytes) {
                int val = b;
                for (int i = 0; i < 8; i++) {
                    binary.append((val & 128) == 0 ? 0 : 1);
                    val <<= 1;
                }
                binary.append(' ');
                txtBox2.setText(binary);
            }
    }
    });
    

    请注意,我添加了

    } }); 到你的代码。在这一行之后开始你的下一个代码