2017-05-23 26 views
0

我想請求我的android代碼的一些幫助。Android - 複選框/單選按鈕分數測驗應用程序

應該用正確的單選按鈕和複選框,點擊添加一個點, - 它 - 但有一個錯誤,我不能找出原因:

這裏是Java代碼:

package com.example.android.myquizapp; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.EditText; 
import android.widget.RadioButton; 
import android.widget.RadioGroup; 
import android.widget.TextView; 
import android.widget.Toast; 

import static com.example.android.myquizapp.R.id.Tom; 
import static com.example.android.myquizapp.R.id.score; 


public class MainActivity extends AppCompatActivity { 
    Button btnSubmit; 
    int score = 0; 

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

     Button btnSubmit = (Button)findViewById(R.id.btnSubmit); 
     btnSubmit.setOnClickListener(new View.OnClickListener(){ 

      @Override 
      public void onClick(View view){ 
       int score = 0; 
       if (((RadioButton)findViewById(R.id.Monica)).isChecked()) {score++;} 
       if (((RadioButton)findViewById(R.id.h5)).isChecked()) {score++;} 
       if (((RadioButton)findViewById(R.id.a3)).isChecked()) {score++;}    
       if (((CheckBox) findViewById(R.id.Tom)).isChecked()){score++;} 
       if (((CheckBox) findViewById(R.id.Brad)).isChecked()){score++;} 
       if (((CheckBox) findViewById(R.id.Bruce)).isChecked()){score++;} 

      {displayResult(score);}} 

    });} 
    private void displayResult() { 
     String message = "You scored " + score; 
     message += " out of 6"; 
     message += "\nWell done!"; 
     Toast toast = Toast.makeText(this, message, Toast.LENGTH_SHORT); 
     toast.setGravity(Gravity.CENTER, 0 , 0); 
     toast.show(); 
    }} 

單詞 「得分」 是紅色Android中工作室下劃線:

{displayResult(評分);}}

該應用程序工作正常,所以不太明白爲什麼。

你能幫我嗎?

+0

什麼是錯誤的味精? –

+0

以及爲什麼您在該行中使用額外{}? –

+0

多數民衆贊成在多數民衆贊成在多數民衆贊成在多數民衆贊成在多數民衆贊成在多數民衆贊成在多數民衆贊成在多數民衆贊成在多數民衆贊成在多數民衆贊成在多數民衆贊成在多數民衆贊成在多數民衆贊成在多數民衆贊成在這個問題, – warl0ck

回答

0

您的displayResult()方法沒有任何參數。你正在向它傳遞一個參數。這就是爲什麼你看到這條紅線

而地球上你的應用程序工作正常。您甚至無法編譯該錯誤代碼。

0

首先你聲明int score = 0;因此您無需在Onclick方法中進行本地聲明。從Onclick方法中刪除以下行。

int score = 0; 

,那麼你是路過PARAM比分displayResult()方法,但你有沒有params.call宣佈

displayResult(); 
0

首先要傳遞的int scoredisplayResult()方法,該方法不期待任何參數其次,你正在圍繞額外的{}括號,這是錯誤的。

此外,您還初始化了Button btnSubmit兩次,這也是錯誤的,現在,由於您傳遞得分值,因此不需要創建global score,這是多餘的,並且不會在任何地方使用。

你應該修改你的代碼爲:

public class MainActivity extends AppCompatActivity { 

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

     Button btnSubmit = (Button) findViewById(R.id.btnSubmit); 
     btnSubmit.setOnClickListener(new View.OnClickListener(){ 

      @Override 
      public void onClick(View view){ 
       int score = 0; 
       if (((RadioButton)findViewById(R.id.Monica)).isChecked()) {score++;} 
       if (((RadioButton)findViewById(R.id.h5)).isChecked()) {score++;} 
       if (((RadioButton)findViewById(R.id.a3)).isChecked()) {score++;} 
       if (((CheckBox) findViewById(R.id.Tom)).isChecked()){score++;} 
       if (((CheckBox) findViewById(R.id.Brad)).isChecked()){score++;} 
       if (((CheckBox) findViewById(R.id.Bruce)).isChecked()){score++;} 

       displayResult(score); 
      } 

     });} 
    private void displayResult(int score) { 
     String message = "You scored " + score; 
     message += " out of 6"; 
     message += "\nWell done!"; 
     Toast toast = Toast.makeText(this, message, Toast.LENGTH_SHORT); 
     toast.setGravity(Gravity.CENTER, 0 , 0); 
     toast.show(); 
    } 
} 

希望這能解決你的問題