在这个应用程序中遇到麻烦;

时间:2018-04-03 16:33:23

标签: java android android-studio

我创建了这个应用程序,但在添加了显示功能的标记.....

即使有很多工作我也无法调试

他们没有让我发帖,因为主要有代码( Google服务条款 最后修改日期:2017年10月25日(查看存档版本)

欢迎使用Google! 感谢您使用我们的产品和服务(“服务”)。服务由Google LLC(“Google”)提供,位于美国加利福尼亚州山景市,Amphitheatre Parkway 1600号,邮编94043。

使用我们的服务即表示您同意这些条款。请仔细阅读。

我们的服务非常多样化,因此有时可能会适用其他条款或产品要求(包括年龄要求)。附加条款将与相关服务一起提供,如果您使用这些服务,这些附加条款将成为您与我们达成协议的一部分。)

package com.example.user.questions;

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.TextView;
import android.widget.Toast;

import java.util.Arrays;

import static android.widget.Toast.makeText;
import static com.example.user.questions.R.string.your_answer;

public class MainActivity extends AppCompatActivity {

    private Button mTrueButton;
    private Button mFalseButton;
    private TextView mQuestionTextView;
    private Button mNextButton;
    private static final String  TAG = "QuizActivity";
    private static final String KEY_INDEX = "index";
    private int marksObtained = 0;
    private TextView mShowAnswers;



    //array for question
    private Question[] mQuestionBank = new Question[]
            {
              new Question( R.string.question_inc , true )  ,

              new Question( R.string.question_nda , true ),

              new Question( R.string.question_sex , false )
            };
    private int mCurrentIndex = 0 ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.activity_main );

        mTrueButton = findViewById( R.id.true_button );

        mFalseButton = findViewById( R.id.false_button );


        mNextButton = findViewById( R.id.next_button );
        mQuestionTextView = findViewById( R.id.questions_text );
        mShowAnswers = findViewById( R.id.show_result );

        //using nezt button here cause it should implement before setting text og question
        updateQuestion();
        mNextButton.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length ;

                    updateQuestion();
                    showAnswers( mCurrentIndex );

            }
        } );




        mTrueButton.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                checkAnswers( true );
                mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length ;

                updateQuestion();
                showAnswers( mCurrentIndex );


            }
        } );
        mFalseButton.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                checkAnswers( false );
                mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length ;

                updateQuestion();
                showAnswers( mCurrentIndex );
            }
        } );

    }
    private void updateQuestion() {
        int questions = mQuestionBank[mCurrentIndex].getTextResId();
        mQuestionTextView.setText( questions );    }

        private  void checkAnswers (boolean mUserPressedTrue){
            boolean answerIsTrue = mQuestionBank[mCurrentIndex].isAnswerTrue();

            int messageResId = 0;
            if (answerIsTrue == mUserPressedTrue) {
                messageResId = R.string.correct_toast;
                marksObtained = marksObtained + 1 ;

            } else {
                messageResId = R.string.wrong_toast;
            }

Toast.makeText( this , messageResId , Toast.LENGTH_SHORT ).show();

        }
    @Override
    public void onSaveInstanceState (Bundle savedInstanceState){
        super.onSaveInstanceState( savedInstanceState );
        savedInstanceState.putInt( KEY_INDEX , mCurrentIndex );
    }
    public void showAnswers (int var){
        if (var == 2) mShowAnswers.setText( marksObtained );
    }
}

log cat while i click last "next_button" hit

1 个答案:

答案 0 :(得分:1)

 mShowAnswers.setText( String.valueOf(marksObtained));

这一行包含错误。当您将文本设置为textview(mShowAnswers)并且marksObtained是整数值时,正在发生的事情是Android将此marksObtained整数值作为@StringRes并尝试从未找到的Strings.xml获取匹配的String值,因此显示例外。

在使用R.string从Strings.xml传递值之前,请不要在setText中传递整数值。

要解决请使用:

{{1}}