价值是没有得到设置单击第二遍的时候 [英] Value is not getting set when click second time

查看:123
本文介绍了价值是没有得到设置单击第二遍的时候的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

其实,我想实现的。我有一点点问题,当我点击成像圈1 按钮,1日在该时间通code 字段更改背景颜色场。但是当我点击图像圈1 按钮中有2次没有变化通code field.I认为的getId()正确不工作。可能我知道什么是实现我的目标是什么?也许这个问题太基本了正确的方法,但余did't找到合适solution.Please帮助我out.Please这个语句查询 View.OnClickListener imgButtonHandlerone =新View.OnClickListener()

下面是我的code:

 公共类为userpass code延伸活动{的ImageButton Imagepassone;
的ImageButton Imagepasstwo;
的ImageButton Imagepassthree;
ImageView的形象;
ImageView的IMAGE2;
ImageView的图像3;
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_user_pass code);    动作条AB = getActionBar();
    ab.setDisplayUseLogoEnabled(假);
    ab.setDisplayShowHomeEnabled(真);
    ab.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
    ab.setCustomView(R.layout.actionbar);
    ab.setDisplayHomeAsUpEnabled(真);
    ColorDrawable colorDrawable =新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);    图像=(ImageView的)findViewById(R.id.imagefirstpass code);
    IMAGE2 =(ImageView的)findViewById(R.id.imagesecondpass code);
    图像3 =(ImageView的)findViewById(R.id.imagethirdpass code);}
View.OnClickListener imgButtonHandlerone =新View.OnClickListener(){    公共无效的onClick(视图v){          如果(v.is pressed()){              INT D组;
              D = R.drawable.passselect;                如果(image.getId()!=四)
                    {
                    image.setImageResource(四);
                     }
                 如果(image.getId()== D&放大器;&安培;!(image2.getId()= d)条)
                  {
                 image2.setImageResource(四);
                  }
             }
                }};
View.OnClickListener imgButtonHandlertwo =新View.OnClickListener(){    公共无效的onClick(视图v){
                }
};View.OnClickListener imgButtonHandlerthree =新View.OnClickListener(){    公共无效的onClick(视图v){
                }
};@覆盖
公共布尔onOptionsItemSelected(菜单项项){
    开关(item.getItemId()){
        案例android.R.id.home:
            在操作栏中//应用程序图标点击;回家
            意向意图=新意图(这一点,UserDobActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(意向);
            返回true;
            默认:
            返回super.onOptionsItemSelected(项目);
    }
}@覆盖
公共无效onBack pressed(){
   moveTaskToBack(真);
   为userpass code.this.finish();
}@覆盖
公共布尔onCreateOptionsMenu(菜单菜单){
    //充气菜单;如果是present这增加了项目操作栏。
    。getMenuInflater()膨胀(R.menu.user_pass code,菜单);
    返回true;
}}


解决方案

D 不是 ID 。我建议你​​这样做:

  //同一侦听器给大家
Imagepassone.setOnClickListener(imgButtonHandler);
Imagepasstwo.setOnClickListener(imgButtonHandler);
Imagepassthree.setOnClickListener(imgButtonHandler);// ...
//切换ID为每个视图相同的监听器里
View.OnClickListener imgButtonHandler =新View.OnClickListener(){
    公共无效的onClick(视图v){
        //检查由ID点击视图
        如果(v.getId()== R.id.Imagepassone){            //做一些像换背景
            如果(image.getBackground()!= getResources()。getDrawable(R.drawable.passselect)){
                image.setBackgroundResource(R.drawable.passselect);
            }否则如果((image.getBackground()== getResources()getDrawable(R.drawable.passselect))及。&放大器;
                (image2.getBackground()!= getResources()。getDrawable(R.drawable.passselect)){
                image.setBackgroundResource(R.drawable.passselect);
            }        }否则如果(v.getId()== R.id.Imagepasstwo){
            // 做一点事
        }否则如果(v.getId()== R.id.Imagepassthree){
            // 做一点事
        }
    }
};

但我认为这不是一个正确的方式..
我所看到和理解,你的图像(图像,图像2,图像3)是顶部圆润的形象,对不对?如果是的话,你可以尝试,通过每一次点击来改变上述这些图标步骤,改变他们的背景。这将是更好的,我认为一个地方要做到这一点 INT 和改变的步骤。像这样的东西应该工作:

  //局部变量略低于ImageView的图像3;线
私人INT nbStep = 0;// ...
Imagepassone.setOnClickListener(imgButtonHandler);
Imagepasstwo.setOnClickListener(imgButtonHandler);
Imagepassthree.setOnClickListener(imgButtonHandler);//监听器
View.OnClickListener imgButtonHandler =新View.OnClickListener(){
     公共无效的onClick(视图v){
         //检查身份证上面一样
         如果(v.getId()== R.id.Imagepassone){
             //增加当地INT
             nbStep ++;
             //调用的一般方法检查与INT背景
             changeStepBackground(nbStep);
         }
     }
});公共无效changeStepBackground(int i)以{
    //四步开关
    开关(ⅰ){
        情况1:
            image.setBackgroundResource(R.drawable.passselect);
        打破;
        案例2:
            image2.setBackgroundResource(R.drawable.passselect);
        打破;
        案例3:
            image3.setBackgroundResource(R.drawable.passselect);
        打破;
        情况4:
            image4.setBackgroundResource(R.drawable.passselect);
        打破;
    }
}

我希望我清楚地了解,这有助于。

Actually , I am trying to implement This .I have a little problem ,When i click Image Circle 1 Button ,on that time Passcode Field change background color of 1st field . But when i click Image Circle 1 Button there are no change in 2nd Passcode field.I think getId() Properly not working .May I know what is the correct way to achieve my objective?Maybe this question too basic, but i did't find any suitable solution.Please Help me out.Please check this statement View.OnClickListener imgButtonHandlerone = new View.OnClickListener()

Here is my code :

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 is not an id. I'd suggest you to do like this:

// 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
        }
    }
};  

But I think this is not a proper way.. As I can see and understand, your image (image, image2, image3) are the top rounded image, right? If yes, you can try, by every click to change the step of these icons above and change their backgrounds. It will be better I think to do this with a local int and change the step. Something like this should work:

// 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;
    }
}

I hope I understand clearly and this helps.

这篇关于价值是没有得到设置单击第二遍的时候的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆