2016-11-11 158 views
0

我在我的片段中有一個按鈕。其中應該變成R.drawable.role_button_pressed然後我按下它,或者如果我的按鈕已經按下它應該變成原來的R.drawable.role_button然後我按下它。但後來我按了我的按鈕,它需要按兩次才能改變它的狀態。按鈕上的第二次點擊android

我的XML看起來是這樣的:

 <Button 
     android:id="@+id/role" 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:gravity="center" 
     android:layout_marginTop="@dimen/margin_role_buttons_top" 
     android:layout_marginRight="@dimen/margin_role_buttons_right" 
     android:layout_marginBottom="@dimen/margin_role_button_bot" 
     android:text="@string/jungle" 
     android:textColor="@android:color/black" 
     android:layout_below="@id/divider4" 
     android:layout_toLeftOf="@id/role_mid_lookingfor" 
     android:background="@drawable/role_button" /> 

和點擊方法

boolean isPressed = true; 

Button rolebutton = (Button) v.findViewById(R.id.role); 

rolebutton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(!isPressed){ 
       rolebutton.setBackgroundResource(R.drawable.role_button_pressed); 
       isPressed=true; 
      }else if(isPressed==true){ 
       rolebutton.setBackgroundResource(R.drawable.role_button); 
       isPressed=false; 
      } 
     } 
    }); 
+1

你'其他if'可以通過只更換'else' –

+0

,但它沒有什麼區別 – TheDude

+2

沒錯它。它更快! :) –

回答

2

你必須擺在首位的錯誤的默認布爾值。 我假設起始資源是R.drawable.role_button

isPressed更改爲false並將其放入您的clickListener中,因爲它沒有正確按下?

,我建議你在使用一個更好的快捷方式,如果別人

rolebutton.setOnClickListener(new View.OnClickListener() { 
    boolean isPressed = false; 

    public void onClick(View v) { 

    rolebutton.setBackgroundResource(isPressed ? R.drawable.role_button : R.drawable.role_button_pressed)); 
    isPressed = !isPressed; 
} 
} 
+0

它仍然需要按兩次:(也許這是一個bug? – TheDude

+0

@ D1的按鈕的默認資源是什麼?你可以發佈XML? –

+0

XML張貼在我的問題 - > android:background =「@ drawable/role_button「 – TheDude

相關問題