0

私はAndroidプログラミングに非常に慣れていないため、少し問題があります。

エラーは次のとおりです。

Variable 'Demo_Button' is accessed from within inner class. Needs to declared final.

私が試したこと:

Demo_button.setImageResource(R.drawable.pressed);に変更final Demo_button.setImageResource(R.drawable.pressed);

package com.iklikla.eightgame;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.ImageButton;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ImageButton Demo_button = (ImageButton)findViewById(R.id.imageButton);

    Demo_button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Demo_button.setImageResource(R.drawable.pressed);
        }
    });
}

}
4

1 に答える 1

1

ここにいくつかのオプションがあります

まず、メンバー変数として宣言すると、機能します

public class MainActivity extends Activity {

    ImageButton Demo_button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Demo_button = (ImageButton)findViewById(R.id.imageButton);

第二に、クリックされているものを変更してViewいるので、その方法でアクセスできます

emo_button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {

    ImageButton btn = (ImageButton)v; // cast the View to an ImageButton
        btn.setImageResource(R.drawable.pressed);
    }
});

関連はありませんが、実行時に現在のコードでエラーが発生します。layout初期化を試みる前にa をインフレートする必要がありますButton(ほとんどの場合 でsetContentView())。したがって、最初の例を使用すると、次のようになります

public class MainActivity extends Activity {

    ImageButton Demo_button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.my_layout);  // where my_layout is the name of your layout
                                             // file containing the Button without the xml extension
       Demo_button = (ImageButton)findViewById(R.id.imageButton);
于 2013-10-16T20:36:39.893 に答える