Android 第二次单击时未设置值

Android 第二次单击时未设置值,android,android-layout,android-view,onclicklistener,Android,Android Layout,Android View,Onclicklistener,实际上,我正在尝试实现。我有一个小问题,当我点击Image Circle 1按钮时,在当时Passcode字段更改第一个字段的背景色。但是当我点击图像圈1按钮时,第二个密码字段没有变化。我认为getId()没有正常工作。我可以知道实现我目标的正确方法吗?也许这个问题太基本了,但是我没有找到任何合适的解决方案。请帮我解决。请检查此语句View.OnClickListener imgButtonHandlerone=newview.OnClickListener() 这是我的密码: public c

实际上,我正在尝试实现。我有一个小问题,当我点击
Image Circle 1
按钮时,在当时
Passcode
字段更改第一个字段的背景色。但是当我点击图像圈1
按钮时,第二个
密码
字段没有变化。我认为
getId()
没有正常工作。我可以知道实现我目标的正确方法吗?也许这个问题太基本了,但是我没有找到任何合适的解决方案。请帮我解决。请检查此语句
View.OnClickListener imgButtonHandlerone=newview.OnClickListener()

这是我的密码:

public class UserPasscode extends Activity {

ImageButton Imagepassone ;
ImageButton Imagepasstwo ;
ImageButton Imagepassthree ;
ImageView image;
ImageView image2;
ImageView image3;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_user_passcode);

    ActionBar ab = getActionBar(); 
    ab.setDisplayUseLogoEnabled(false);
    ab.setDisplayShowHomeEnabled(true);
    ab.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
    ab.setCustomView(R.layout.actionbar);
    ab.setDisplayHomeAsUpEnabled(true);
    ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#33CCFF"));     
    ab.setBackgroundDrawable(colorDrawable);

    Imagepassone = (ImageButton) findViewById(R.id.ButtonPassOne);
    Imagepasstwo = (ImageButton) findViewById(R.id.ButtonPassTwo);
    Imagepassthree = (ImageButton) findViewById(R.id.ButtonPassThree);

    Imagepassone.setOnClickListener(imgButtonHandlerone); 
    Imagepasstwo.setOnClickListener(imgButtonHandlertwo); 
    Imagepassthree.setOnClickListener(imgButtonHandlerthree); 

    image = (ImageView) findViewById(R.id.imagefirstpasscode);
    image2 = (ImageView) findViewById(R.id.imagesecondpasscode);
    image3=(ImageView)findViewById(R.id.imagethirdpasscode);

}


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

    public void onClick(View v) {     

          if(v.isPressed()){

              int d ; 
              d = R.drawable.passselect;

                if(image.getId()!=d)
                    {
                    image.setImageResource(d);
                     }          
                 if(image.getId()==d && (image2.getId()!=d))
                  {
                 image2.setImageResource(d);
                  }
             }
                }

};


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

    public void onClick(View v) {


                }
};

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

    public void onClick(View v) {


                }
};

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            // app icon in action bar clicked; go home
            Intent intent = new Intent(this, UserDobActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            return true;
            default:
            return super.onOptionsItemSelected(item);
    }
}

@Override
public void onBackPressed() {
   moveTaskToBack(true); 
   UserPasscode.this.finish();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.user_passcode, menu);
    return true;
}}

d
不是
id
。我建议你这样做:

// same listener for everyone
Imagepassone.setOnClickListener(imgButtonHandler); 
Imagepasstwo.setOnClickListener(imgButtonHandler); 
Imagepassthree.setOnClickListener(imgButtonHandler);  

//...
// switch id for each view inside the same listener
View.OnClickListener imgButtonHandler = new View.OnClickListener() {
    public void onClick(View v) { 
        // check the view clicked by id    
        if(v.getId() == R.id.Imagepassone) {

            // do something like change background
            if(image.getBackground() != getResources().getDrawable(R.drawable.passselect)) {
                image.setBackgroundResource(R.drawable.passselect);
            } else if((image.getBackground() == getResources().getDrawable(R.drawable.passselect)) &&
                (image2.getBackground() != getResources().getDrawable(R.drawable.passselect)) {
                image.setBackgroundResource(R.drawable.passselect);
            }

        } else if(v.getId() == R.id.Imagepasstwo) {
            // do something
        } else if(v.getId() == R.id.Imagepassthree) {  
            // do something
        }
    }
};  
但是我认为这不是一个合适的方式。。 正如我所看到和理解的,你的图像(图像,图像2,图像3)是顶部圆形的图像,对吗?如果是,您可以尝试通过每次单击来更改上面这些图标的步骤并更改其背景。我认为最好使用本地
int
并更改步骤。像这样的方法应该会奏效:

// local variable just below ImageView image3; line
private int nbStep = 0;

// ...
Imagepassone.setOnClickListener(imgButtonHandler); 
Imagepasstwo.setOnClickListener(imgButtonHandler); 
Imagepassthree.setOnClickListener(imgButtonHandler); 

// listener
View.OnClickListener imgButtonHandler = new View.OnClickListener() {
     public void onClick(View v) { 
         // check id like above
         if(v.getId() == R.id.Imagepassone) {
             // augment the local int
             nbStep++;
             // call a general method to check the background with int
             changeStepBackground(nbStep);
         }
     }
});

public void changeStepBackground(int i) { 
    // four step switch
    switch(i) {
        case 1:
            image.setBackgroundResource(R.drawable.passselect);
        break;
        case 2:
            image2.setBackgroundResource(R.drawable.passselect);
        break;
        case 3:
            image3.setBackgroundResource(R.drawable.passselect);
        break;
        case 4:
            image4.setBackgroundResource(R.drawable.passselect);
        break;
    }
}

我希望我能理解清楚,这会有所帮助。

您将布局ID(image.getId())和资源ID(R.drawable.passelect)混为一谈。“图像圈1按钮”和“图像圈1图像按钮”之间有什么区别?这句话毫无意义。另外,“这个功能”不是每个人都知道的,我现在甚至不知道你想要实现什么。“图像圈1按钮”和“图像圈1图像按钮”都是一样的。你最好澄清你的问题。我编辑代码。省略getId()。但不工作,先生。请检查此项。很高兴帮助您!谢谢你的回答。快乐编码!