0

サイレント プロファイル設定と通常プロファイル設定を切り替えるシンプルな Android アプリケーションを作成しています。私はアンドロイド開発を学んでおり、このプログラムはダミーのAndroidアプリケーション開発から来ています。は次のactivity_main.xmlとおりです。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    >


    <ImageView 
        android:id ="@+id/phone_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:src="@drawable/phone_on"
        />    

    <Button 
        android:id="@+id/toggleButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="@string/toggle_silent_mode"
        />

</LinearLayout>

のコードは次のMainActivity.javaとおりです。 package com.example.silentmodetoggle;

import android.graphics.drawable.Drawable;
import android.media.AudioManager;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity 
{
    private AudioManager mAudioManager;
    private boolean mPhoneIsSilent;

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

        mAudioManager = (AudioManager)getSystemService(AUDIO_SERVICE);      

        checkIfPhoneIsSilent();
        setButtonClickListener();       
    }

    private void checkIfPhoneIsSilent() 
    {
        int ringerMode = mAudioManager.getRingerMode();
        if (ringerMode == AudioManager.RINGER_MODE_SILENT)
            mPhoneIsSilent = true;
        else
            mPhoneIsSilent = false;
    }

    private void setButtonClickListener() 
    {
        Button toggleButton = (Button)findViewById(R.id.toggleButton);
        toggleButton.setOnClickListener(new View.OnClickListener() 
        {
            public void onClick(View arg0) 
            {
                if (mPhoneIsSilent)
                {
                  mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
                    mPhoneIsSilent = false;
                }
                else
                {
                        mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
                    mPhoneIsSilent = true;
                }

                toggleUi();             
            }   
        } );    
    }

    private void toggleUi()
    {
        ImageView imageview = (ImageView)findViewById(R.id.phone_icon);
        Drawable newPhoneImage;

        if (mPhoneIsSilent)
            newPhoneImage = getResources().getDrawable(R.drawable.phone_silent);
        else
            newPhoneImage = getResources().getDrawable(R.drawable.phone_on);

        imageview.setImageDrawable(newPhoneImage);  
    }

    protected void onResume()
    {
        super.onResume();
        checkIfPhoneIsSilent();
        toggleUi();
    }

    public boolean onCreateOptionsMenu(Menu menu) 
    {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}

問題はtogglebutton、アプリケーションを実行しても が表示されないことです。また、プロファイルをサイレントに変更してから通常に変更すると、アプリケーションに画像のみが表示されます (これは、次の場合の状態に属します)。

mPhoneIsSilent = false.

何が欠けているのか誰でも説明できますか?

4

0 に答える 0