2016-07-23 3 views
0

異なる色の9つのボタンがあるアクティビティを作成しようとしています。ボタンの上に表示されている文字列を、対応する色の文字列と共に押したときにのみランダムに変更するようにします。しかし、私がアプリを実行すると、緑のボタンだけがテキスト文字列を変更し、テキスト文字列に緑色以外の色が表示されても変更されます。 if-then-elseコードで何か間違っていますか? (私は残りの6つの色のボタンのコードを完了していない。)多くのありがとう!!!ボタンと文字列で拡張if-then-elseステートメントを作成する方法

パッケージcom.example.franco.sampleapp;

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.content.res.Resources; 
import android.view.View; 
import android.widget.TextView; 
import android.widget.Button; 
import java.lang.String; 
import java.util.Random; 


public class MainActivity extends AppCompatActivity implements View.OnClickListener { 

    private static final Random r_generator = new Random(); 
    String textViewString; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     TextView tv = (TextView) findViewById(R.id.color_text); 

     Button green= (Button) findViewById(R.id.green_button); 
     green.setOnClickListener(this); 
     Button blue = (Button) findViewById(R.id.blue_button); 
     blue.setOnClickListener(this); 
     Button red = (Button) findViewById(R.id.red_button); 
     red.setOnClickListener(this); 
     Button yellow= (Button) findViewById(R.id.yellow_button); 
     yellow.setOnClickListener(this); 
     Button white = (Button) findViewById(R.id.white_button); 
     white.setOnClickListener(this); 
     Button orange = (Button) findViewById(R.id.orange_button); 
     orange.setOnClickListener(this); 
     Button brown= (Button) findViewById(R.id.brown_button); 
     brown.setOnClickListener(this); 
     Button pink = (Button) findViewById(R.id.pink_button); 
     pink.setOnClickListener(this); 
     Button purple = (Button) findViewById(R.id.purple_button); 
     purple.setOnClickListener(this); 
     textViewString = tv.getText().toString(); 

    } 

    @Override 
    public void onClick(View v) { 

     if (v.getId() == R.id.green_button && textViewString.equals("Green")) { 

      Resources res = getResources(); 
      String[] myString = res.getStringArray(R.array.colorArray); 
      String q = myString[r_generator.nextInt(myString.length)]; 
      TextView tv = (TextView) findViewById(R.id.color_text); 
      tv.setText(q); 

     } else if (v.getId() == R.id.blue_button && textViewString.equals("Blue")) { 

      Resources res = getResources(); 
      String[] myString = res.getStringArray(R.array.colorArray); 
      String q = myString[r_generator.nextInt(myString.length)]; 
      TextView tv = (TextView) findViewById(R.id.color_text); 
      tv.setText(q); 

     } else if (v.getId() == R.id.red_button && textViewString.equals("Red")){ 

      Resources res = getResources(); 
      String[] myString = res.getStringArray(R.array.colorArray); 
      String q = myString[r_generator.nextInt(myString.length)]; 
      TextView tv = (TextView) findViewById(R.id.color_text); 
      tv.setText(q); 

     } 
    } 

    } 
+0

代わりに 'switch ... case'を使わないのはなぜですか? –

答えて

1

あなたMainActivityOnClickListenerをしないでください。

代わりに、各ボタンに追加する匿名OnClickListener Sを作成します。

Button green= (Button) findViewById(R.id.green_button); 
green.setOnClickListener(new View.OnClickListener() { 
    @Override public void onClick(View v) { 
    if (!textViewString.equals("Green")) return; 
    Resources res = getResources(); 
    String[] myString = res.getStringArray(R.array.colorArray); 
    String q = myString[r_generator.nextInt(myString.length)]; 
    TextView tv = (TextView) findViewById(R.id.color_text); 
    tv.setText(q); 
    } 
}); 

Button blue = (Button) findViewById(R.id.blue_button); 
blue.setOnClickListener(new View.OnClickListener() { 
    @Override public void onClick(View v) { 
    if (!textViewString.equals("Blue")) return; 
    Resources res = getResources(); 
    String[] myString = res.getStringArray(R.array.colorArray); 
    String q = myString[r_generator.nextInt(myString.length)]; 
    TextView tv = (TextView) findViewById(R.id.color_text); 
    tv.setText(q); 
    } 
}); 

など

その後長い他/ IFチェーンのための必要はありません。

+0

ありがとう!しかし...ボタンを押すたびに、アプリがクラッシュします。なぜアイデアはありますか? – Franco

+0

あなたのlogcatを見てください。 –

+0

'07-23 17:35:23.234 25708-25708/com.example.franco.sampleapp E/AndroidRuntime:致命的例外:メイン java.lang.NullPointerException'。私はこれが何を意味するのか分からない...ありがとう!!! – Franco

関連する問題