1

リスナーでこのコードを使用して、ボタンの onClick イメージを変更しようとしました

public void onClick(View v) {
   if(v==ButtonName)
   ButtonName.setImageResource(R.drawable.clicked_button_image);
   //action code                              

}  

この方法でボタンのイメージは正しく変更されますが、誰かが Android デバイスの[戻る] ボタンを使用すると、ボタンはクリックされたイメージで表示されます (前のアクティビティの最後のインスタンスが明確に表示されるため)。

コードを使用しようとすると:

public void onClick(View v) {
       if(v==ButtonName)
       ButtonName.setImageResource(R.drawable.clicked_button_image);
       ButtonName.setImageResource(R.drawable.unclicked_button_image);
       //action code                              

    } 

ボタンの画像は変わりません。

どうすればこの問題を解決できますか? (xmlを編集せずに)。

4

3 に答える 3

0

戻るボタンをクリックしたときに元に戻るのはどうですか?

@Override
public boolean onRestore()
{
    if(unclickedImageDisplayed)
    {
       ButtonName.setImageResource(R.drawable.unclicked_button_image);
    }

}

ドキュメントとアクティビティのライフサイクルを見ると、アクティビティに戻ったときにメソッドon Restoreが呼び出されることがわかります。

おそらく、ボタンの背景を変更するときに変更するプライベート変数を用意し、たとえばこのブール値をチェックすることで、ボタンの背景を変更して、プログラムで初期状態にすることができます。

于 2012-07-20T17:01:33.097 に答える
0

この効果を達成するには、これを試してください:

drawable フォルダーに新しい xml を作成する必要があります: (私は button_action を呼び出しました)

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/clicked_button_image" android:state_pressed="true"/>
    <item android:drawable="@drawable/unclicked_button_image"/>
</selector>

あなたのレイアウトで:

<Button
        android:id="@+id/infobtncontact"
        style="@style/ButtonNormal"
        android:layout_marginTop="10dp"
        android:background="@drawable/button_action"
        android:src="@drawable/unclicked_button_image" />

変更を認識するためにEclipseを再起動する必要があるかもしれません。

私のひどい英語ですみません!

于 2012-07-20T17:08:48.143 に答える
0

このメソッドを使用する理由を説明しない限り、このようなカスタム ボタンを実際に使用する必要があります。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_pressed="true" android:drawable="@drawable/clicked_button_image" /> <!-- pressed -->
  <item android:state_focused="true" android:drawable="@drawable/focus_button_image" /> <!-- focused -->
  <item android:drawable="@drawable/unclicked_button_image"/> <!-- default -->
</selector> 
于 2012-07-20T17:08:58.223 に答える