現在AndroidStudioで診断系のアプリを制作しています。そこで出題問題ごとにボタンのテキストも変更したいと思い以下のプログラムを組みました。理想は問題の乱数rにあわせてボタンのテキストビューが変わるようにしたいのですが、次の問題が表示されても次の問題用の回答用にボタンのテキストが変わってくれません。どうすればよいかアドバイスをいただきたいと思い投稿しました。よろしくお願いいたします。追記7/19、一応ボタンを押した際にボタンのテキストを変えることができました(二個目のコード参照)ただほかにも良いやり方がありそうなので回答を待っています。こうすればもう少しスタイリッシュでシンプルなコードになるよって意見がありましたぜひお願いします。
コード public class shindan extends AppCompatActivity { String[] q = {"行くなら?", "隠れるなら?" };//問題 String[] ta = {"海","ドアの裏" };//+ String[] ba = {"山","ベットの下" };//- int r = 0;//乱数の保管 int count = 10;//問題数 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_shindan); r = new Random().nextInt(q.length); ((TextView) findViewById(R.id.situmon)).setText(q[r]); displayTop(); displayBottom(); } public void displayTop() {//上のボタンのテキストを変えるメソッド if (r == 0) { ((TextView) findViewById(R.id.top)).setText(ta[0]); }else if (r==1){ ((TextView) findViewById(R.id.top)).setText(ta[1]); } } public void displayBottom() {//下のボタンのテキストを変えるメソッド if (r == 0) { ((TextView) findViewById(R.id.bottom)).setText(ba[0]); }else if (r==1){ ((TextView) findViewById(R.id.bottom)).setText(ba[1]); } } public void onTop(View view) {//上のボタンのメソッド count--; if (count > 0) { ((TextView) findViewById(R.id.tc)).setText("のこり" + count + "問..."); //出題 r = new Random().nextInt(q.length); ((TextView) findViewById(R.id.situmon)).setText(q[r]); } } public void onBottom (View view){//下のボタンのメソッド count--; if (count > 0) { ((TextView) findViewById(R.id.tc)).setText("のこり" + count + "問..."); //出題 r = new Random().nextInt(q.length); ((TextView) findViewById(R.id.situmon)).setText(q[r]); } } }
コード public void onTop(View view) {//上のボタンのメソッド count--; if (count > 0) { ((TextView) findViewById(R.id.tc)).setText("のこり" + count + "問..."); //出題 r = new Random().nextInt(q.length); ((TextView) findViewById(R.id.situmon)).setText(q[r]); if (r == 0) {//ここにテキストを変えるメソッド追加 ((TextView) findViewById(R.id.top)).setText(ta[0]); ((TextView) findViewById(R.id.bottom)).setText(ba[0]); }else if (r==1){ ((TextView) findViewById(R.id.top)).setText(ta[1]); ((TextView) findViewById(R.id.bottom)).setText(ba[1]); } } } public void onBottom (View view){//下のボタンのメソッド count--; if (count > 0) { ((TextView) findViewById(R.id.tc)).setText("のこり" + count + "問..."); //出題 r = new Random().nextInt(q.length); ((TextView) findViewById(R.id.situmon)).setText(q[r]); if (r == 0) {//ここにテキストを変えるメソッド追加 ((TextView) findViewById(R.id.top)).setText(ta[0]); ((TextView) findViewById(R.id.bottom)).setText(ba[0]); }else if (r==1){ ((TextView) findViewById(R.id.top)).setText(ta[1]); ((TextView) findViewById(R.id.bottom)).setText(ba[1]); } } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。