(Button)ButtonListener1.this.findViewById(R.id.mButton);

解决方案 »

  1.   

    这里我注意到了,但是我的问题是我的progressbar找到了控件,下面的setVisibility()报空指针!我是在自己的util工具类中操作Activity的handler来改变ui。
      

  2.   

    (Button)getCurrentActivity().findViewById(R.id.mButton);
    这样写是对的。但是我是在util中操作handler来实现activity界面更新。我贴代码吧:
    public ProgressBar[] pro = new ProgressBar[5];
    public ProgressBar progressbar;
    public int[] progress = { R.id.mapp_app189_progressBar,
    R.id.mapp_appWifi_progressBar, R.id.mapp_hbzs_progressBar,
    R.id.mapp_tycloud_progressBar, R.id.mapp_ysync_progressBar }; public DownloadFile(Context context, Activity activity) {
    this.context = context;
    this.activity = activity;
    } public Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) { int i = (Integer) msg.obj;
    Log.d("msg", "msg:" + i);
    switch (msg.what) {
    case 0:
    pro[i] = (ProgressBar) activity.findViewById(progress[i]);
    pro[i].setVisibility(View.VISIBLE);
    pro[i].setProgress(0);
    pro[i].invalidate();
    break;
    case 2:
    pro[i].invalidate();
    Toast.makeText(context, "网络连接失败,请检查您的网络设置", Toast.LENGTH_SHORT)
    .show();
    break;
    case 3:
    pro[i].invalidate();
    Toast.makeText(context, "sd卡未找到,请检查您的sd卡是否插入",
    Toast.LENGTH_SHORT).show();
    break;
    case 4:
    pro[i].setVisibility(View.GONE);
    break;
    default:
    break;
    }
    super.handleMessage(msg);
    } };
      

  3.   

    activity界面更新,这些都是在主线程里才能操作的
      

  4.   

    findViewById()这个方法完整的写法 是:  activity.this.finfviewByid();
      

  5.   

    public class ButtonListener1 implements OnClickListener {
    @Override
    public void onClick(View v) {
    v.setBackgroundResource(R.drawable.green);
    }
    }