为什么我的代码出错了?

时间:2017-01-27 14:56:16

标签: android android-studio onclicklistener

设置我的on click侦听器以获取名为convert的特定按钮时写入

代码在View和v

之间的空格处给出了红色下划线

我是Android工作室的新手并尝试通过在Google上搜索来解决此问题,但无济于事。我在哪里以及如何做错?

编辑1:我明确地解决了错误,在onCreate结束时它是一个错位的大括号,在执行实际代码之前有效地终止了onCreate。然而现在它执行得很好,除了一个小小的缺陷,它没有输出。我该怎么办?

代码:

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


    final EditText inputNum = (EditText) findViewById(R.id.inputNum);
    final TextView octNum = (TextView) findViewById(R.id.octNum);
    final TextView binNum = (TextView) findViewById(R.id.octNum);
    final TextView hexNum = (TextView) findViewById(R.id.octNum);
    final Button convert = (Button) findViewById(R.id.convert);
    View.OnClickListener listener = new OnClickListener() {
        @Override
        public void onClick(final View v) {
            convert.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View view) {
                    int a = Integer.parseInt(inputNum.getText().toString());
                    String bin = Integer.toBinaryString(a);
                    String oct = Integer.toOctalString(a);
                    String hex = Integer.toHexString(a);
                    octNum.setText(oct);
                    binNum.setText(bin);
                    hexNum.setText(hex);
                }
            });


        }
    };
}

@Override
public void onClick(View v) {

}

3 个答案:

答案 0 :(得分:2)

   convert.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //  handle your click event
            }
        });

修改

用户可以按下或点击按钮来执行操作!

活动中按钮的典型用法如下:

public class MyActivity extends Activity {
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
         setContentView(R.layout.content_layout_id);

         final Button button = (Button) findViewById(R.id.button_id);
         button.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 // Perform action on click
             }
         });
     }
 }

但是,而不是OnClickListener应用于活动中的按钮,您可以使用android:onClick在XML布局中为按钮指定方法。 您正试图通过setOnClickListener实现某种程度的事情。你是吗?

现在,当用户点击该按钮时,Android系统会调用活动的myClickMethod(View)(我创建的)方法。为了使其工作,该方法必须是公共的并接受View作为其唯一参数。例如:

     <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="myClickMethod"
        android:text="button" />

并在代码中

public void myClickMethod(View view) {
     // Perform action 
 }

答案 1 :(得分:1)

你应该像这样提供一个onClickListener的新实例。

    convert.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //Code here 
        }
    });

答案 2 :(得分:0)

调用方法时,不应指定参数类型。编译器要么在其上拥有它,要么输出错误。目前,AndroidStudio认为你正试图传递两个参数,&#34; View&#34;和&#34; v&#34;,对方法并忘记了它们之间的逗号。

将调用替换为convert.setOnClickListener(v),错误消息将变得更加清晰,即setOnClickListener未使用View类型的参数定义。