更改ImageView图像,可变错误?

时间:2012-10-31 08:42:22

标签: android sdk

我正在尝试更改图像视图中的图像,但是当我在oncreate中设置变量时,它会给我一条黄线,这样我就无法更改图像。

在这个应用程序中,我正在检查Internet连接。基本上,如果互联网连接可用,我想显示一定的图像;如果不是我想为此显示图像。

继承我的代码:

  @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));
            }
        }

    });

}

3 个答案:

答案 0 :(得分:1)

您需要将ImageView声明为final才能在内部类中使用它:

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

Btw Eclipse应显示错误消息

  

无法引用内部类中的非最终变量imagev   用不同的方法定义

答案 1 :(得分:1)

将图像视图声明为类变量,即imageV应在onCreate之前声明(作为类变量)而不是在其中。它会解决你的问题..

答案 2 :(得分:0)

public class {activity_name}扩展了Activity { 静态ImageView imagev;

@覆盖 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));
        }
    }

});

}