Java setOnclickListener以获取按钮帮助

Java setOnclickListener以获取按钮帮助,java,android,Java,Android,我刚刚开始安卓系统的开发,我不明白为什么这样做行不通。下面是我得到的错误(粗体块引号前的最后一行): >说明资源路径位置类型 语法错误,插入“;”以完成FieldDeclaration MainActivity.java/8ballv2/src/com/sample/ballv2第56行java问题 @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items

我刚刚开始安卓系统的开发,我不明白为什么这样做行不通。下面是我得到的错误(粗体块引号前的最后一行):

>说明资源路径位置类型 语法错误,插入“;”以完成FieldDeclaration MainActivity.java/8ballv2/src/com/sample/ballv2第56行java问题

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

/**
 * A placeholder fragment containing a simple view.
 */
public static class PlaceholderFragment extends Fragment {

    public PlaceholderFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container,
                false);
        return rootView;
    }
}

}

正如上面所说的,因为您在这里声明了一个字段,所以需要在这里插入分号。这就是它应该是什么样子

private OnClickListener answerL = new OnclickListener(){
    public void onClick(view v) {
    ...............
    }//onClick ends here
}; //OnClickListener  ends here

我在IDE中尝试了您的代码,但在提供的示例中,问题在于变量声明:

private OnClickListener answerL = new OnClickListener(){
     public void onClick(view v) {
           Random token = random();
           int tokenno = token.nextInt(10);
           CharSequence ans = "";
           switch(tokenno) {
                case 0:ans=getString(R.string.msg0);break;
                case 1: ans=getString(R.string.msg1);break;
                case 2: ans=getString(R.string.msg2);break;
                case 3: ans=getString(R.string.msg3);break;
                case 4: ans=getString(R.string.msg4);break;
                case 5: ans=getString(R.string.msg5);break;
                case 6: ans=getString(R.string.msg6);break;
                case 7: ans=getString(R.string.msg7);break;
                case 8: ans=getString(R.string.msg8);break;
                case 9: ans=getString(R.string.msg9);break;
                case 10:ans=getString(R.string.msg10);break;
            }
            Context context = getApplicationContext();
            Toast msg = Toast.makeText(context,ans,Toast.LENGTH_LONG);
            msg.show();
      }
}//here should be ';'
之所以发生这种情况,是因为View.OnClickListener具有带有方法的主体。如果没有方法(例如,您创建了

私有类MyOnClickListener实现OnClickListener

() 那就是这样,

private MyOnClickListener answerL = new MyOnClickListener(); //<- semicolon here. 

private MyOnClickListener answerL=new MyOnClickListener();//
OnclickListener
是一个
接口
,您应该像这样创建它的对象:

private OnClickListener answerL = new OnclickListener(){
    public void onClick(view v) {
        //do stuffs here
    }
 };

请注意结尾处的分号。

似乎在
MainActivity.java的第56行缺少一个分号。
您是否尝试在“}”之后插入“;”号?因为如果OnClickListener不是匿名类型,它会是这样的:private OnClickListener answerL=new OnClickListener();您有private OnClickListener answerL=new OnClickListener(){…}//这里什么都没有我尝试过删除}并添加;事实上,在我这样做的那一刻,出现了更多的错误
private OnClickListener answerL = new OnclickListener(){
    public void onClick(view v) {
        //do stuffs here
    }
 };