2013-06-05 5 views
0

TextField에 예를 들어 "abc"를 입력하면 무언가를 만들고 싶습니다. 활동이 열립니다. 내가 다른 것을 입력하면 그 활동을 열기를 원하지 않습니다. 나는 이미 무언가를 만들었는데 처음으로 작동합니다 (올바른 입력을 입력하지 않으면 잘못되었습니다. 그리고 "abc"를 입력하면 페이지가 열립니다.) "abc"와 " BBB는 ". 그것은 처음 작동하지만 내가 돌아가서 뭔가를 입력하는 경우는 첫 번째 시도와 같은 페이지가 열립니다. 은 아마도 내가 OnClickListener,하지만 어떻게 해제 할 수 있나요?버튼을 클릭하면 onClickListener가 제거됩니다.

이 내 MainActivity.java입니다

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

    final Button button = (Button) findViewById(R.id.button1); 
    final EditText textedit = (EditText) findViewById(R.id.editText1); 

    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

      if ("abc".equals(textedit.getText().toString())) 
       button.setOnClickListener(new View.OnClickListener() { 

        @Override 
        public void onClick(View v) { 
         // TODO Auto-generated method stub 
         Intent intent = new Intent (MainActivity.this, Schoen1.class); 
         startActivity(intent); 


        } 
       });     
      if ("bbb".equals(textedit.getText().toString())) 
       button.setOnClickListener(new View.OnClickListener() { 

        @Override 
        public void onClick(View v) { 
         // TODO Auto-generated method stub 
         Intent i = new Intent (MainActivity.this, Schoen2.class); 
         startActivity(i); 

        } 
       }); 
      else 
       button.setText("wrong pass"); 

     } 
    }); 
} 


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

}

"Schoen1"와 "Schoen2는"열 내 페이지입니다.감사합니다!

+0

내 대답을 확인하십시오. 그것은 당신이 필요한 전부 여야합니다. 'onClick' 내부에서'if' 문을 움직여야하고 여분의'listener'는 필요 없습니다. – codeMagic

답변

0

문제는 onClickListener()이 이미 설정되어 있습니다. 당신이해야 할 것은 내부에 그 코드를 이동 당신의 onClick()

   @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
       if ("abc".equals(textedit.getText().toString())) 
       { 
         Intent intent = new Intent (MainActivity.this, Schoen1.class); 
         startActivity(intent); 
       } 
       else if ("bbb".equals(textedit.getText().toString())) 
       { 
         Intent i = new Intent (MainActivity.this, Schoen2.class); 
         startActivity(i); 
       } 
+0

@ user2320105이'flag' 변수는 어디에 있습니까? 위의 대답에서 알 수 있습니다. 나는 그 깃발들이하고있는 것이 무엇인지 보지 못한다. 당신이 내 대답을 사용한다면 당신은 어떤 플래그도 필요하지 않습니다. – codeMagic

0

당신은 초보자를위한 onClickListener의 내부에 두 개의 onClickListener의가 있습니다. 내부 집합을 없애고 플래그를 추가하여 Intent이 실행되면 다음 번에 다시 실행되지 않도록합니다. Intents이 한 번만 열리지 않도록 어느 시점에서 플래그를 재설정해야합니다.

boolean flag1 = true; 
boolean flag2 = true; 

button.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 

     if ("abc".equals(textedit.getText().toString()) && flag1) { 
      flag1 = false; 
      Intent intent = new Intent (MainActivity.this, Schoen1.class); 
      startActivity(intent); 

     } else if ("bbb".equals(textedit.getText().toString()) && flag2) { 
      flag2 = false; 
      Intent i = new Intent (MainActivity.this, Schoen2.class); 
      startActivity(i); 

     } else { 
      button.setText("wrong pass"); 
     } 

    } 
}); 

코드 테스트를 거치지 않았습니다.

+0

당신의 방법을 시도했지만 "둘러싸는 타입으로 정의되어 있기 때문에 마지막 로컬 변수 flag2를 할당 할 수 없습니다"와 플래그 1에서 같은 것을 얻습니다. flag1 = false 부분. 이 문제를 해결하는 방법? – user2320105

+0

'final' 변수를 재 할당 할 수 없습니다. 그래서 그들은 '최종'입니다 – codeMagic

+0

@codeMagic - 최종 변수를 재 지정할 수는 없지만 값을 변경할 수는 있습니다. – jschabs

관련 문제