0

イメージビューでイメージを変更しようとしていますが、oncreate で変数を設定すると黄色の線が表示され、イメージを変更できません。

このアプリでは、インターネット接続を確認しています。基本的に、インターネット接続が利用できる場合、特定の画像を表示したい。そうでない場合は、その画像を表示したいと思います。

ここに私のコードがあります:

  @Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    ImageView imagev = (ImageView) findViewById(R.id.imageView1);

    Button btnStatus = (Button) findViewById(R.id.btn_check);

    // creating connection detector class instance
    cd = new ConnectionDetector(getApplicationContext());

    /**
     * Check Internet status button click event
     * */
    btnStatus.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            // get Internet status
            isInternetPresent = cd.isConnectingToInternet();

            // check for Internet status
            if (isInternetPresent) {
                // Internet Connection is Present
                // make HTTP requests
                showAlertDialog(AndroidDetectInternetConnectionActivity.this, "Internet Connection",
                        "You have internet connection", true);
                imagev.setImageDrawable(getResources().getDrawable(R.drawable.withinternet));

            } else {
                // Internet connection is not present
                // Ask user to connect to Internet
                showAlertDialog(AndroidDetectInternetConnectionActivity.this, "No Internet Connection",
                        "You don't have internet connection.", false);
                imagev.setImageDrawable(getResources().getDrawable(R.drawable.nointernet));
            }
        }

    });

}
4

3 に答える 3

1

画像ビューをクラス変数として宣言します。つまり、imageV は、その内部ではなく、onCreate の前に (クラス変数として) 宣言する必要があります。それはあなたの問題を解決します..

于 2012-10-31T08:51:36.597 に答える
1

内部クラスで使用するには、ImageView を final として宣言する必要があります。

final ImageView imagev = (ImageView) findViewById(R.id.imageView1);

ところで、Eclipseはエラーメッセージを表示するはずです

別のメソッドで定義された内部クラス内の非最終変数 imagev を参照できません

于 2012-10-31T08:45:28.413 に答える
0

public class {activity_name} extends Activity { static ImageView imagev;

@Override public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


//ImageView imagev = (ImageView) findViewById(R.id.imageView1);
 //This activity name. Mainactivity if it is so.
  {activity_name}.imagev = (ImageView) findViewById(R.id.imageView1);

Button btnStatus = (Button) findViewById(R.id.btn_check);

// creating connection detector class instance
cd = new ConnectionDetector(getApplicationContext());

/**
 * Check Internet status button click event
 * */
btnStatus.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {

        // get Internet status
        isInternetPresent = cd.isConnectingToInternet();

        // check for Internet status
        if (isInternetPresent) {
            // Internet Connection is Present
            // make HTTP requests
            showAlertDialog(AndroidDetectInternetConnectionActivity.this, "Internet Connection",
                    "You have internet connection", true);
            {activity_name}.imagev.setImageDrawable(getResources().getDrawable(R.drawable.withinternet));

        } else {
            // Internet connection is not present
            // Ask user to connect to Internet
            showAlertDialog(AndroidDetectInternetConnectionActivity.this, "No Internet Connection",
                    "You don't have internet connection.", false);
            {activity_name}.imagev.setImageDrawable(getResources().getDrawable(R.drawable.nointernet));
        }
    }

});

}

于 2012-10-31T09:11:09.647 に答える