Java setOnclickListener以获取按钮帮助
我刚刚开始安卓系统的开发,我不明白为什么这样做行不通。下面是我得到的错误(粗体块引号前的最后一行): >说明资源路径位置类型 语法错误,插入“;”以完成FieldDeclaration MainActivity.java/8ballv2/src/com/sample/ballv2第56行java问题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
@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
}
};