2016-07-11 79 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

你的代碼似乎沒問題,有點多餘,但確定,你有什麼問題?有什麼錯誤?你可以發佈堆棧跟蹤嗎? –

+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

兩次定義'score'是沒有意義的 –

+0

@JuanCruzSoler對不起,更新我的回答 – ddb

+0

嗨ddb,你的代碼工作的方式,但不完全是我需要的,你的代碼會發生什麼當用戶自動檢查複選框時,屏幕上會彈出分數。你能告訴我怎麼才能當用戶按submitButton顯示分數? – elZ

-1

你應該使用:

private int score=0 
+1

更改訪問修飾符不會解決問題 –

+0

非常感謝您的回答 – elZ

2

你的分數在int類型,可以使用setText(int)在這種情況下。所以你試圖加載資源id==score

嘗試修改參數,使用這個versionsetText方法:

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

使用'String.valueOf(score)'。 –

+0

@JuanCruzSoler更新:) –

-1

試試這個 - >替換int分數;將您的代碼與int score = 0;並檢查它是否有效。

+1

默認情況下,Int初始化爲0。 –

+0

非常感謝您的回答 – elZ