2013-03-02 5 views
-2

그래서 튜토리얼 앱을 실행하고 있지만 벨로우즈 클래스를 실행하려고 할 때를 제외한 모든 코드가 작동하지만 코드에 오류가 없기 때문에 누군가가 도움이 될지 궁금 해서요. 코드에 문제가있을 수 있습니다.내 코드 충돌이 왜 발생합니까

또한 프로그래밍 할 때 예를 들어 xml이나 something에 say : android :를 입력하면 안됩니다. 자바에서 어떻게 갈 수있는 모든 옵션을 가진 드롭 다운 메뉴를 얻지 못하겠습니까?

코드 :

package com.example.learn.tam; 

import java.util.Random; 

import android.app.Activity; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.text.InputType; 
import android.view.Gravity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.ToggleButton; 

public class textplay extends Activity implements View.OnClickListener{ 

Button chkCommand; 
ToggleButton passToggle; 
EditText input; 
TextView display; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.text); 

    holder(); 

    passToggle.setOnClickListener(this); 

    chkCommand.setOnClickListener(this); 
} 

private void holder() { 

    Button chkCommand = (Button) findViewById(R.id.bResults); 
    passToggle = (ToggleButton) findViewById(R.id.tbPassword); 
    input = (EditText) findViewById(R.id.etCommands); 
    display = (TextView) findViewById(R.id.tvResults); 

} 

@Override 
public void onClick(View v) { 
    switch(v.getId()){ 
    case R.id.bResults: 

     String check = input.getText().toString(); 

     display.setText(check); 

     if(check.contentEquals("left")){ 
      display.setGravity(Gravity.LEFT); 
     } 
     else if(check.contentEquals("center")) { 
      display.setGravity(Gravity.CENTER); 
     } 
     else if(check.contentEquals("right")){ 
      display.setGravity(Gravity.RIGHT); 
     } 
     else if(check.contentEquals("blue")){ 
      display.setTextColor(Color.BLUE); 
     } 
     else if(check.contentEquals("WTF")){ 
      Random crazy = new Random(); 
      display.setText("WTF!!!!"); 
      display.setTextSize(crazy.nextInt(75)); 
      display.setTextColor(Color.rgb(crazy.nextInt(265),crazy.nextInt(265),crazy.nextInt(265))); 

      switch(crazy.nextInt(3)){ 
      case 0: 
       display.setGravity(Gravity.LEFT); 
       break; 
      case 1: 
       display.setGravity(Gravity.CENTER); 
       break; 
      case 2: 
       display.setGravity(Gravity.RIGHT); 
       break; 
      } 
     } 
     else{ 
      display.setText("Invalid"); 
      display.setGravity(Gravity.CENTER); 
      display.setTextColor(Color.WHITE); 
     } 


     break; 
     case R.id.tbPassword: 

     if (passToggle.isChecked() == true){ 
      input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); 
     }else{ 
      input.setInputType(InputType.TYPE_CLASS_TEXT); 
     } 
     break; 
    } 
} 
} 
+1

오류 로그를 게시하십시오. – MByD

+0

참고 :'if (passToggle.isChecked()) {'는'if (passToggle.isChecked() == true) {'에 해당하며 입력이 덜 필요합니다. – Sam

답변

3

변경 :

private void holder() { 

    Button chkCommand = (Button) findViewById(R.id.bResults); 
    passToggle = (ToggleButton) findViewById(R.id.tbPassword); 
    input = (EditText) findViewById(R.id.etCommands); 
    display = (TextView) findViewById(R.id.tvResults); 

} 

같은 이름의 새 변수를 선언함으로써

private void holder() { 

    chkCommand = (Button) findViewById(R.id.bResults); 
    passToggle = (ToggleButton) findViewById(R.id.tbPassword); 
    input = (EditText) findViewById(R.id.etCommands); 
    display = (TextView) findViewById(R.id.tvResults); 

} 

하려면 클래스 필드를 숨기고 있었다. 이 때문에 클래스 레벨 chkCommand은 null로 남았고 chkCommand.setOnClickListener(this);을 사용하려고 시도했을 때 예외가 발생했습니다.

+0

고마워, 나는 이것을 게시하기 전에 4 번 같은 코드를 읽었지만 어리석은 오류를 놓치지 않았다. – TAM

+1

TAM upvote를 권하고 답변을 수락하십시오. – duffymo

+0

정확하게하려고 노력할 수 있습니까? 클래스 필드는 전역이 아닙니다. – Simon

관련 문제