所以我试图改变一个图像,当它下面的按钮被点击。我正在尝试将手机从普通模式切换到静音模式,并根据手机的状态更改图片。单击按钮时如何更改图像?
我正在关注一本书,不知道什么是错的(我不是复制粘贴造成问题的cuz)。不过好消息。尽管当手机切换到静音模式时图片不会改变,但是当我以静音模式重新打开应用程序时,图像会变为默认模式时应该显示的内容。当我切换回正常模式时,它可以工作,但不会改变它的图像,直到我关闭并重新打开应用程序并且系统读取手机的状态。我不知道什么是错,但是我的继承人代码:
private AudioManager mAudioManager;
private boolean mPhoneIsSilent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.linear);
mAudioManager= (AudioManager)getSystemService (AUDIO_SERVICE);
checkIfPhoneIsSilent();
setButtonClickListener();
toggleUi();
}
private void setButtonClickListener(){
Button toggleButton=(Button) findViewById(R.id.toggleButton);
toggleButton.setOnClickListener(
new View.OnClickListener(){
public void onClick(View v){
if (mPhoneIsSilent){
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
mPhoneIsSilent=false;
}
else{
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
mPhoneIsSilent=true;
}
}
}
);
}
private void toggleUi() {
ImageView imageView=(ImageView)findViewById(R.id.phone_icon);
Drawable newPhoneImage;
if(mPhoneIsSilent)
newPhoneImage=getResources().getDrawable(R.drawable.mute);
else
newPhoneImage=getResources().getDrawable(R.drawable.unmute);
imageView.setImageDrawable(newPhoneImage);
setContentView(R.layout.linear);
}
private void checkIfPhoneIsSilent()
{
int ringerMode=mAudioManager.getRingerMode();
if(ringerMode==AudioManager.RINGER_MODE_SILENT)
mPhoneIsSilent=true;
else mPhoneIsSilent=false;
}
这里是XML来与它一起去:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/phone_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@drawable/unmute" />
<Button
android:id="@+id/toggleButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Toggle Silent Mode"/>
</LinearLayout>
tarsem感谢您的回复。我尝试过,不幸的是......没有什么区别。该应用程序的作品,但图像不改变!你认为它只是模拟器吗? – alaboudi
@ user2613577尝试我更新的答案,这一定会帮助你! –