2013-03-02 2 views
-2

Так что я запускаю учебное приложение, и все это работает, за исключением случаев, когда я пытаюсь запустить следующий класс, однако я не получаю ошибок в коде, поэтому мне было интересно, может ли кто-нибудь помочь, если там возможно, что-то не так с кодом.Почему мой код аварии

Также на стороне не при программировании, например, вы говорите: android: в xml или что-то в этом роде. в java, почему я не получаю раскрывающееся меню со всеми вариантами того, что может последовать?

код:

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 остался пустым и дал вам исключение, когда вы пытались использовать chkCommand.setOnClickListener(this);.

+0

Спасибо, я прочитал код, как 4 раза, прежде чем публиковать его и все же удалось пропустить тупую ошибку. – TAM

+1

Я бы рекомендовал, чтобы TAM повышала и принимала ответ. – duffymo

+0

Можем ли мы попытаться быть точными? Поле класса не является глобальным. – Simon

Смежные вопросы