2013-09-30 3 views
0

간단한 토글 자동 모드 앱을 사용하려고합니다. 나는 이제까지 인형 책과 운 없음을 알아 들었다.클릭시 텍스트를 변경하는 버튼이 필요합니다.

내가하고 싶은 일은 오디오가 켜져있는 경우입니다. 단추에서 내 텍스트를 끄고 (문자열 사용) 바꾸고 싶습니다. 눌렀을 때 다른 문자열로 변경되기를 원합니다. 하지만 나는이 일을 바로 잡을 수는 없다. 지금까지 여러 가지 방법을 시도했습니다. 어떤 제안?

package com.example.silentmodetoggle; 

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

public class TSMMainActivity extends Activity { 

    //Instantiate an AudioManager to manage the ringer state 
    private AudioManager mAudioManager; 
    private boolean mPhoneIsSilent; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_tsmmain); 

     mAudioManager = (AudioManager)getSystemService(AUDIO_SERVICE); 

     checkIfPhoneIsSilent(); 

     setButtonClickListener(); 

     //does this even work? 
     TextView textView=(TextView)findViewById(R.string.silence_phone); 
    }//onCreate 

    private void setButtonClickListener() 
    { 
     Button toggleButton = (Button) findViewById(R.id.toggleButton); 
     toggleButton.setOnClickListener(new View.OnClickListener() 
     { 

      @Override 
      public void onClick(View v) 
      { 
       if (mPhoneIsSilent) 
       { //set to normal mode 
        mAudioManager 
        .setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
        mPhoneIsSilent = false; 
       } 
       else 
       { 
        mAudioManager 
        .setRingerMode(AudioManager.RINGER_MODE_SILENT); 
        mPhoneIsSilent = true; 
       } 

       //now toggle the UI again 
       toggleUi(); 
      } 
     }); 
    } 


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

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

     if (mPhoneIsSilent) 
     { 
      //i think i should put it here. 

      newPhoneImage = getResources().getDrawable(R.drawable.phone_silent); 
     } 
     else 
     { 
      newPhoneImage = getResources().getDrawable(R.drawable.phone_on); 
     } 

     imageView.setImageDrawable(newPhoneImage); 
    } 

    private void textView(int silencePhone) { 
     // TODO Auto-generated method stub 

    } 

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

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) 
    { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.tsmmain, menu); 
     return true; 
    } 

} 

답변

1

이 시도 :

@Override 
      public void onClick(View v) 
      { 
       if (mPhoneIsSilent) 
       { //set to normal mode 
        mAudioManager 
        .setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
        mPhoneIsSilent = false; 
        ((Button)v).setText("Turn On"); 
       } 
       else 
       { 
        mAudioManager 
        .setRingerMode(AudioManager.RINGER_MODE_SILENT); 
        mPhoneIsSilent = true; 
        ((Button)v).setText("Turn Off"); 
       } 

희망이 도움이 :)

+0

큰 도움 감사합니다. –

+0

나는 이것을 책에서 결코 보지 못했다. 나는 이것을 메모해야만한다. –

0

을 OnClickListener를 (보기 V)에서 인수 V는 클릭 버튼입니다. 따라서 setText (String s) 메서드를 호출하고 텍스트를 변경할 수 있습니다.

명시 적으로 유형으로 변환해야합니다. v는 일반적인 유형의보기입니다.

관련 문제