View.getId()起作用,而button.getId()不起作用

时间:2019-08-03 14:05:25

标签: java android button view onclick

我已经在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?

1 个答案:

答案 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();

是正确的。