我正在尝试学习一些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;
}
}
有人可以提供建议,让这条非常简单的生产线工作吗?我已经复制了其他代码,所以我很确定语法是正确的。
答案 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;
}
}