2016-07-11 3 views
-1

Я пытаюсь создать простую викторину, где в зависимости от выбора пользователя в checkBoxes, submitButton отображает результат на экране. Когда ответ правильный, оценка увеличивается на 1 балл, если ответ неверен, оценка уменьшается на 1 балл. Я полностью застрял!Почему экран не отображается на экране?

MainActivity.java

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity { 
    int score; 
    Button submitButton; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     submitButton = (Button) findViewById(R.id.submitAnswer); 
     submitButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       submitButton.setText(score); 
      } 
     }); 
    } 

    public void checkBoxes(View view) { 

     CheckBox checkBox1 = (CheckBox) findViewById(R.id.checkBox1); 
     boolean hasCheckBox1 = checkBox1.isChecked(); 

     CheckBox checkBox2 = (CheckBox) findViewById(R.id.checkBox2); 
     boolean hasCheckBox2 = checkBox2.isChecked(); 

     boolean checked = ((CheckBox) view).isChecked(); 
     switch(view.getId()){ 
      case R.id.checkBox1: 
       Toast.makeText(this, "Hooray!Your answer is right", Toast.LENGTH_SHORT).show(); 
       score ++; 
       break; 
      case R.id.checkBox2: 
       Toast.makeText(this,"Sorry, try again!", Toast.LENGTH_SHORT).show(); 
       score --; 
       break; 
     } 
    } 
} 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.allyouask.practicebutton.MainActivity"> 

    <CheckBox 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="RightAnswer" 
     android:id="@+id/checkBox1" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="179dp" 
     android:onClick="checkBoxes"/> 

    <CheckBox 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="WrongAswer" 
     android:id="@+id/checkBox2" 
     android:layout_below="@+id/checkBox1" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="32dp" 
     android:onClick="checkBoxes"/> 

    <Button 
     android:id="@+id/submitAnswer" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Submit" 
     android:textSize="20sp" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:onClick="onClick"/> 

</RelativeLayout> 
+0

Ваш код выглядит нормально, бит избыточен, но хорошо, какая у вас проблема? любая ошибка? можете ли вы отправить stacktrace? –

+0

Итак, какая у вас проблема с выражением? – adalPaRi

+0

Проблема представляет собой кнопку отправки приложения, я не могу подключить, как submitButton покажет оценку правильных и неправильных ответов, которые пользователь выбрал. – elZ

ответ

0

вы должны вызвать обновления метода для того, чтобы обновить текст на кнопке или обновить его содержание другого пути, как это ниже

MainActivity.java

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity { 
    int score; 
    Button submitButton; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     submitButton = (Button) findViewById(R.id.submitAnswer); 
     submitButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       submitButton.setText(String.valueOf(score)); 
      } 
     }); 
    } 

    public void checkBoxes(View view) { 

     CheckBox checkBox1 = (CheckBox) findViewById(R.id.checkBox1); 
     boolean hasCheckBox1 = checkBox1.isChecked(); 

     CheckBox checkBox2 = (CheckBox) findViewById(R.id.checkBox2); 
     boolean hasCheckBox2 = checkBox2.isChecked(); 

     boolean checked = ((CheckBox) view).isChecked(); 
     switch(view.getId()){ 
      case R.id.checkBox1: 
       Toast.makeText(this, "Hooray!Your answer is right", Toast.LENGTH_SHORT).show(); 
       score ++; 
       break; 
      case R.id.checkBox2: 
       Toast.makeText(this,"Sorry, try again!", Toast.LENGTH_SHORT).show(); 
       score --; 
       break; 
     } 
     //submitButton.setText(String.valueOf(score)); 
    } 
} 
+0

Не имеет смысла определять 'счет' два раза –

+0

@JuanCruzSoler извините, обновил мой ответ – ddb

+0

Привет, ddb, ваш код работает в некотором роде, но не совсем то, что мне нужно, что происходит с вашим кодом когда пользователь проверяет checkbox автоматически, всплывающее окно появляется на экране. Не могли бы вы рассказать мне, как это может быть, только когда пользователь нажимает кнопку submitButton? – elZ

-1

вы должны использовать:

private int score=0 
+1

Изменение модификатора доступа не решит проблему –

+0

Большое спасибо за ваш ответ – elZ

2

Ваш счет в int типа, вы используете setText(int) в этом случае. Итак, вы пытаетесь загрузить ресурс с id==score.

Попробуйте изменить аргументы, чтобы использовать эту version из setText метода:

submitButton.setText(String.valueOf(score)) 
+1

Используйте 'String.valueOf (score)'. –

+0

@JuanCruzSoler обновлен :) –

-1

попробуйте это -> Заменить int score; введите код с int score = 0; и проверьте, работает ли он.

+1

Int по умолчанию инициализируется как 0. –

+0

Большое спасибо за ваш ответ – elZ

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