36

drawableフォルダの下に新しいフォルダを追加しましたres。フォルダ内で、フォルダからファイルをdrawableコピーしました。ボタンを押したときに、標準の画像を新しい画像に変更したいと思います。コードを書きましたが、アプリを起動するとクラッシュします。ic_launcher.pngdrawable-hdpiImageButton

Button imgButton; 

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

    findViewById(R.id.imgButton).setOnClickListener(imgButtonHandler);      
}

View.OnClickListener imgButtonHandler = new View.OnClickListener() {

    public void onClick(View v) {

        imgButton.setBackgroundResource(R.drawable.ic_launcher);

    }
};

編集:私はこれに変更しました、そしてこれも機能しません。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    imgButton = (Button) findViewById(R.id.imgButton);
    imgButton.setOnClickListener(imgButtonHandler);
}


View.OnClickListener imgButtonHandler = new View.OnClickListener() {

    public void onClick(View v) {
        imgButton.setBackgroundResource(R.drawable.ic_launcher);

    }
};

編集2:これはうまくいきます。ありがとうございます。

ImageButton button;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    button= (ImageButton)findViewById(R.id.imgButton);
    button.setOnClickListener(imgButtonHandler);
}


View.OnClickListener imgButtonHandler = new View.OnClickListener() {

    public void onClick(View v) {
        button.setBackgroundResource(R.drawable.ic_launcher);

    }
};
4

7 に答える 7

15
<ImageButton android:src="@drawable/image_btn_src" ... />

image_btn_src.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/icon_pressed"/>
<item android:state_pressed="false" android:drawable="@drawable/icon_unpressed"/>
</selector>
于 2015-05-27T06:41:53.083 に答える
10

これは、imgButton が null であるためです。代わりにこれを試してください:

findViewById(R.id.imgButton).setBackgroundResource(R.drawable.ic_action_search);

またははるかに読みやすい:

imgButton = (Button) findViewById(R.id.imgButton);
imgButton.setOnClickListener(imgButtonHandler);

次にonClickで:imgButton.setBackgroundResource(R.drawable.ic_action_search);

于 2012-09-03T14:12:33.687 に答える
3

XMLファイルで正しく実行できます。

android:onClick="@drawable/ic_action_search"
于 2012-09-03T14:27:03.977 に答える
2

変数にボタンを割り当てていますimgButton

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

    imgButton = (Button) findViewById(R.id.imgButton);
    imgButton.setOnClickListener(imgButtonHandler);
}
于 2012-09-03T14:14:52.187 に答える