2013-03-02 130 views
-2

所以我正在運行一個教程應用程序,除了當我嘗試運行bellow類時,它都可以工作,但是我沒有在代碼中看到錯誤,所以我想知道是否有人可以幫忙可能代碼有問題。爲什麼我的代碼崩潰

另外在一邊不編程時,例如你鍵入說: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 2013-03-02 15:53:16

+0

注意:'if(passToggle.isChecked()){'等同於if(passToggle.isChecked()== true){'並且需要更少的輸入。 – Sam 2013-03-02 15:57:45

回答

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 2013-03-02 15:56:54

+1

我建議TAM upvote並接受答案。 – duffymo 2013-03-02 16:12:24

+0

我們可以請儘量準確嗎?類字段不是全局的。 – Simon 2013-03-02 16:18:41

相關問題