令牌“start”上的语法错误。非常简单的代码

时间:2013-03-31 08:50:35

标签: java android

我正在尝试学习一些java / android开发,但我真的很挣扎于基础知识。

我的代码看起来像这样。

package com.example.app_james3;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

    MediaPlayer media=MediaPlayer.create(this, R.raw.button);
    media.start();  // THIS LINE IS GIVING ERROR: Syntax error on token "start",    Identifier expected after this token

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

    @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;
    }

}

有人可以提供建议,让这条非常简单的生产线工作吗?我已经复制了其他代码,所以我很确定语法是正确的。

2 个答案:

答案 0 :(得分:2)

在Java中,所有语句(任何未声明变量或类的语句)都必须包含在方法或构造函数中。 media.start();是一个声明。因此,你应该把它放在一个方法中。

因为media.start();应该在启动时间附近执行,所以请将其放在onCreate中:

MediaPlayer media;

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

    // Your initialization code goes here:
    media = MediaPlayer.create(this, R.raw.button);
    media.start();
}

答案 1 :(得分:0)

您必须在活动中声明变量,但是当您在函数内部或在 setcontentview 之后初始化xml时。 您还必须阅读以下链接: - Why does onClickListener not work outside of onCreate method?

When does Application's onCreate() method get called?

What's onCreate(Bundle savedInstanceState)

public class MainActivity extends Activity { 



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

MediaPlayer media=MediaPlayer.create(this, R.raw.button);
media.start();  // THIS LINE IS GIVING ERROR: Syntax error on token "start",    Identifier expected after this token
}

@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;
}

}