eclipse中的onPause给出语法错误,void是无效类型

时间:2014-03-03 16:48:22

标签: java android eclipse

我在我的活动中使用onPause方法,但是我收到以下错误:

Syntax error, insert ";"to complete LocalVariableDeclarationStatement

void is an invalid type for the variable onPause

代码:

public class MusicActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_music);

    final MediaPlayer MP = MediaPlayer.create(MusicActivity.this, R.raw.burntumber);

    Button burntumberPlay = (Button) findViewById(R.id.start1Button);
    burntumberPlay.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            MP.start();
        }
    });

    Button burntumberStop = (Button) findViewById(R.id.stop1Button);
    burntumberStop.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            MP.pause();
                            MP.seekTo(0);
        }
    });

    @Override
    protected void onPause{
        super.onPause();
        MP.stop();
        MP.release();
    };

}
}

编辑:

public class MusicActivity extends Activity {

MediaPlayer MP = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_music);


    MP = MediaPlayer.create(MusicActivity.this, R.raw.burntumber);

    Button burntumberPlay = (Button) findViewById(R.id.start1Button);
    burntumberPlay.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            MP.start();
        }
    });

    Button burntumberStop = (Button) findViewById(R.id.stop1Button);
    burntumberStop.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            //MP.stop(); //won't restart when start() is run again
            MP.pause();
            //MP.seekTo(0);
        }
    });


}

@Override
protected void onPause{
    super.onPause();
    MP.stop();
    MP.release();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.music, menu);
    return true;
}

}

错误:

Syntax error, insert ";" to complete FieldDeclaration
The annotation @Override is disallowed for this location
void is an invalid type for the variable onPause    

2 个答案:

答案 0 :(得分:2)

您的方法位于onCreate()内并且有一个“;”在它的最后。这是一个单独的方法,所以不应该在方法中。

public class MusicActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_music);

    // onCreate() code

}

@Override
protected void onPause{
    super.onPause();
    MP.stop();
    MP.release();
}

修改

您还缺少onPause()方法的“()”。这就是Eclipse认为它是Field而不是方法的原因。将其更改为

   @Override
   protected void onPause(){  // missing the parenthesis here
        super.onPause();
        MP.stop();
        MP.release();
   }

答案 1 :(得分:0)

在onPause方法结束时删除SemiColon

protected void onPause{
super.onPause();
MP.stop();
MP.release();
 }