-2

だから私はチュートリアルアプリを実行していますが、以下のクラスを実行しようとする場合を除いてすべて機能しますが、コードにエラーが発生しないので、コードに何か問題がある場合は誰かが助けてくれるのではないかと思っていました.

また、たとえばプログラミング時ではなく、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;
    }
}
}
4

1 に答える 1

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);

于 2013-03-02T15:53:10.963 に答える