Android 语法错误{应为空
有两个错误,如第28行和第28行所示,谁能告诉我为什么会出现这些错误Android 语法错误{应为空,android,Android,有两个错误,如第28行和第28行所示,谁能告诉我为什么会出现这些错误 package com.xcxcxc; import android.app.Activity; import android.database.Cursor; import android.os.Bundle; import android.provider.MediaStore; import android.provider.UserDictionary; import android.text.TextUtils; i
package com.xcxcxc;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.provider.UserDictionary;
import android.text.TextUtils;
import android.util.Log;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
public class UserDict extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.audiolistmain);
}
SimpleCursorAdapter adapter;
ListView audiolist = (ListView) findViewById(R.id.audioList);
String[] mProjection =
{
UserDictionary.Words._ID,
UserDictionary.Words.WORD,
UserDictionary.Words.LOCALE
};
String mSelectionClause = null;
String[] mSelectionArgs = {""};
static final String[] DBFIELDS= {UserDictionary.Words.WORD, UserDictionary.Words.LOCALE};
static final int[] LISTFIELDS = { R.id.dictWord,R.id.locale};
String mSearchString = "m"; //syntax error on token ";" { expected after this token
if (TextUtils.isEmpty(mSearchString)) {
mSelectionClause = null;
mSelectionArgs[0] = "";
} else {
mSelectionClause = UserDictionary.Words.WORD + " = ?";
mSelectionArgs[0] = mSearchString;
}
Cursor mCursor = getContentResolver().query(
UserDictionary.Words.CONTENT_URI,
mProjection,
mSelectionClause,
mSelectionArgs,
null);
if (null == mCursor) {
Log.e("Cursor returned null, query could not be performed","");
} else if (mCursor.getCount() < 1) {
Toast.makeText(this, "nowords"+mSearchString+"found", Toast.LENGTH_LONG).show();
} else {
int[] mWordListItems = { R.id.dictWord, R.id.locale};
String[] mWordListColumns =
{
UserDictionary.Words.WORD,
UserDictionary.Words.LOCALE
};
SimpleCursorAdapter mCursorAdapter = new SimpleCursorAdapter(
getApplicationContext(),
R.layout.row,
mCursor,
DBFIELDS,
LISTFIELDS);
audiolist.setAdapter(mCursorAdapter);
} // syntax error insert } to complete class body
紧跟在您显示为带有错误标记的行之后的行是代码,该代码应该在方法中,但不是。我猜您不是有意在这一行之后关闭onCreate:
setContentView(R.layout.audiolistmain);
这里列出的所有代码都应该是该方法的一部分。只需删除下一行的右括号},并在文件末尾添加两个右括号,它应该是匹配的。要解决第二个问题,你需要在文件末尾加一个结尾}来完成类主体。如果你仍然没有得到@Xono所说的内容 删除此文件的{
package com.xcxcxc;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.provider.UserDictionary;
import android.text.TextUtils;
import android.util.Log;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
public class UserDict extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.audiolistmain);
} <--------------- THIS ONE
^
|
|
|
|
|
|
|
THIS ONE
把它放在最底部
编辑:
还要添加另一个{以关闭类。请缩进您的代码…这样问题就会很明显。并添加一个额外的}在底部-UserDict类定义也没有关闭,正如@Cobra_Mo指出的,我仍然不明白为什么android希望我将某些代码放在一个单独的方法中,有人能解释一下吗,我读了又读java代码,但找不到什么时候某个代码不能放在主类中,但必须放在一个单独的方法中请原谅se?我对这件事几乎发疯了,找不到答案简单地说,所有代码都必须在一个方法内。在Java中,你可以在类定义UserDict内定义和初始化变量,但所有其他代码都必须在一个方法内。例如,int x=0可以在一个方法外,因为它所做的只是创建和设置init变量的初始值。但是,whilex<10{x=x+1;}必须在方法内部,因为它不是初始化变量,而是在执行逻辑。如果您的调用看起来大致类似于VarType variable\u name=initial\u value,则可以将其放在方法外部。否则,它必须在内部。
package com.xcxcxc;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.provider.UserDictionary;
import android.text.TextUtils;
import android.util.Log;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
public class UserDict extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.audiolistmain);
// "{" ====>> Removed
SimpleCursorAdapter adapter;
ListView audiolist = (ListView) findViewById(R.id.audioList);
String[] mProjection =
{
UserDictionary.Words._ID,
UserDictionary.Words.WORD,
UserDictionary.Words.LOCALE
};
String mSelectionClause = null;
String[] mSelectionArgs = {""};
static final String[] DBFIELDS= {UserDictionary.Words.WORD, UserDictionary.Words.LOCALE};
static final int[] LISTFIELDS = { R.id.dictWord,R.id.locale};
String mSearchString = "m"; //syntax error on token ";" { expected after this token
if (TextUtils.isEmpty(mSearchString)) {
mSelectionClause = null;
mSelectionArgs[0] = "";
} else {
mSelectionClause = UserDictionary.Words.WORD + " = ?";
mSelectionArgs[0] = mSearchString;
}
Cursor mCursor = getContentResolver().query( UserDictionary.Words.CONTENT_URI,
mProjection,
mSelectionClause,
mSelectionArgs,
null);
if (null == mCursor) {
Log.e("Cursor returned null, query could not be performed","");
} else if (mCursor.getCount() < 1) {
Toast.makeText(this, "nowords"+mSearchString+"found", Toast.LENGTH_LONG).show();
} else {
int[] mWordListItems = { R.id.dictWord, R.id.locale};
String[] mWordListColumns =
{
UserDictionary.Words.WORD,
UserDictionary.Words.LOCALE
};
SimpleCursorAdapter mCursorAdapter = new SimpleCursorAdapter(
getApplicationContext(),
R.layout.row,
mCursor,
DBFIELDS,
LISTFIELDS);
audiolist.setAdapter(mCursorAdapter);
}
} //===========> "}" added
} //===========> "}" added