2013-04-17 119 views
0

我是新的Android開發,我試圖給我的第一個Android項目添加一個ToggleButton。並有一個問題,使其工作,如我所願。Android的togglebutton不顯示正確的值

這是我ToggleButton

<ToggleButton 
    android:id="@+id/toggle1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:enabled="true" 
    android:textOff="Off" 
    android:textOn="On" /> 

這是我的Activity類:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_toggle); 
     addListenerOnButton(); 
    } 
    public void addListenerOnButton() { 
     togglelocation = (ToggleButton) findViewById(R.id.toggle1); 
     togglelocation.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
       } 
      }); 

      } 

問題是,當我點擊切換按鈕什麼而我期待發生在屏幕上切換按鈕在開/關之間切換。

togglebutton

當我調試,真/假之間isChekced()的值發生變化。

但在屏幕上沒有任何改變。我不知道我錯過了什麼。

編輯:

我認爲這是關係到我的設備平板電腦華爲。我只是在虛擬設備中測試它,它的功能就像一個魅力!

+0

//togglelocation.toggle();如果你添加它,你不需要這條線。並且相同的代碼對我很好 – Triode

+0

這段代碼對我來說工作正常,確保你評論togglelocation.toggle();在運行代碼之前 –

+0

togglelocation.toggle();根本不需要,它會自動切換狀態。你也可以打電話給點擊監聽器。 – Triode

回答

0

你不需要任何代碼,使其開啓/關閉。只需添加切換按鈕,以這樣的XML和它做你需要什麼:

<ToggleButton 
    android:id="@+id/toggleButton1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/CreateFileButton" 
    android:layout_centerHorizontal="true" 
    android:text="ToggleButton" /> 

添加一些功能,使用下面的代碼在活動的java文件。

tb = (ToggleButton) findViewById(R.id.toggleButton1); 

    tb.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

      if(isChecked) 
      { 

       Toast.makeText(MainActivity.this, "on State", Toast.LENGTH_SHORT).show(); 
      } 
      else 
      { 
       Toast.makeText(MainActivity.this, "off State", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 
+0

這正是我所做的。但不適合我!任何想法爲什麼? – Anass

+0

您正在使用setOnClicklistener()。我正在使用setOnCheckedChangeListener()。兩者都不同。 – SKK

+0

但在這兩種情況下,切換顯示屏應該工作? – Anass

1

在您的活動課程中,將togglelocation = (ToggleButton) findViewById(R.id.toggle1);移出您的addListenerOnButton()方法,並將其放入onCreate方法中。請把它addListenerOnButton()之前,像這樣:

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

     togglelocation = (ToggleButton) findViewById(R.id.toggle1); 

     addListenerOnButton(); 
    } 
+0

嗨ss1271,我編輯我的代碼看到我的問題。但仍然有同樣的問題。即使我點擊togglebutton沒有任何改變。我能否更新屏幕或類似的東西? – Anass

+0

@Anass那很奇怪 – dumbfingers

+0

是的:s!我花了4個小時對此沒有結果! – Anass