2012-10-10 63 views
1

我剛剛開始使用Android,並正在通過烹飪書嘗試代碼。我的問題是,每次我嘗試使用setOnClickListener時,我都會遇到兩個語法錯誤;一個在代碼的上面,另一個在課程的最後。我已經完全從書中複製了代碼,但仍然出現錯誤。我試過谷歌搜索,但沒有人似乎有同樣的問題,所以我要麼做錯了什麼,或者在Eclipse中有一個錯誤。使用setOnClickListener時的語法錯誤(Android)

package com.example.tes; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

Button startButton = (Button) findViewById(R.id.trigger); 


startButton.setOnClickListener(new View.OnClickListener() { 
public void onClick(View view) { 
} 
}); 

} 

的錯誤出現在線路21 - 「Syntax error on token "}", delete this token」 和 「Syntax error, insert "}" to complete ClassBody」。當我只添加「startButton.setOnClickListener」代碼時,沒有錯誤,只有當我嘗試設置onClickListener時纔會出現。

我確定我在某處發生了錯誤,但我確實看不到它。

任何幫助將不勝感激。

謝謝。

+0

編輯:我忘了說第二個錯誤發生在第31行,即在代碼的結尾。 – cadge

+1

你忘了把它放在方法 – keyser

+0

Keyser意味着將你的按鈕初始化和setOnClickListener移動到onCreate。 – Simon

回答

6

由於您的代碼在不知所云的情況下浮動,並且不在方法內,因此您會收到錯誤消息。嘗試使用:

public class MainActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button startButton = (Button) findViewById(R.id.trigger); 

    startButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
     } 
    }); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 


} 
+0

非常感謝!我想我誤解了我讀的代碼,因爲這本書一步一步沒有顯示實際的完整代碼。因此,我認爲我正在創建一個實際的方法,並不需要把它放在另一個方法中。 – cadge