Android 语法错误{应为空

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

有两个错误,如第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;
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