我已经在android中实现了一个mediaplayer,它可以借助不同的按钮来播放不同的文件。
public class MainActivity extends AppCompatActivity {
MediaPlayer mediaPlayer;
Button button;
public void play(View view)
{
int id = view.getId();
String ourId = view.getResources().getResourceEntryName(id);
mediaPlayer = MediaPlayer.create(this,getResources().getIdentifier(ourId,"raw","com.example.demo"));
mediaPlayer.start();
}
上面的代码会在输出正确的同时
public class MainActivity extends AppCompatActivity {
MediaPlayer mediaPlayer;
Button button;
public void play(View view)
{
int id = button.getId();
String ourId = view.getResources().getResourceEntryName(id);
mediaPlayer = MediaPlayer.create(this,getResources().getIdentifier(ourId,"raw","com.example.demo"));
mediaPlayer.start();
}
使应用程序崩溃。
如果我单击按钮,那么应该获取按钮的ID?
答案 0 :(得分:1)
此行:
int id = button.getId();
由于button
未初始化,因此崩溃了您的应用。
更改为此:
button = (Button) view;
int id = button.getId();
使用此代码,将view
强制转换为Button
,并将其分配给变量button
。
因此button
已正确初始化,而不是null
。
这并不意味着您必须执行此过程。
如果您只需要id
,请使用有效的代码进行操作,而无需将变量view
强制转换为Button
。返回的ID:
int id = view.getId();
是正确的。