简体   繁体   English

在真实设备上运行时的 Android IndexOutOfBoundsException

[英]Android IndexOutOfBoundsException when running on real device

I am developing quiz application where user can solve quiz in particular time but when I am running application on emulator it runs without error but at the time of running application on real device it throws following error.我正在开发测验应用程序,用户可以在特定时间解决测验,但是当我在模拟器上运行应用程序时,它运行没有错误,但在真实设备上运行应用程序时,它会引发以下错误。

Error:-错误:-

    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2683)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2744)
    at android.app.ActivityThread.-wrap12(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1493)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6195)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:874)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:764)
    Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.get(ArrayList.java:411)
    at com.gaurav.javascripttutorial.subactivities.QuizMainActivity.onCreate(QuizMainActivity.java:52)

Code:-代码:-

public class QuizMainActivity extends AppCompatActivity {

    private ProgressBar countDownTimer;
    private TextView timer;
    public int counter;

    List<Question> quesList;
    int score=0;
    int qid=0;
    Question currentQ;
    TextView txtQuestion;
    RadioButton rda, rdb, rdc;
    Button butNext;

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

        /**
         * Quiz coding
         */

        DbHelper db=new DbHelper(this);
        quesList=db.getAllQuestions();
        currentQ=quesList.get(qid);
        txtQuestion=(TextView)findViewById(R.id.textView1);
        rda=(RadioButton)findViewById(R.id.radio0);
        rdb=(RadioButton)findViewById(R.id.radio1);
        rdc=(RadioButton)findViewById(R.id.radio2);
        butNext=(Button)findViewById(R.id.nextButton);
        setQuestionView();
        butNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                RadioGroup grp=(RadioGroup)findViewById(R.id.radioGroup1);
                RadioButton answer=(RadioButton)findViewById(grp.getCheckedRadioButtonId());
                Log.d("yourans", currentQ.getANSWER()+" "+answer.getText());
                if(currentQ.getANSWER().equals(answer.getText()))
                {
                    score++;
                    Log.d("score", "Your score"+score);
                }
                if(qid<22){
                    currentQ=quesList.get(qid);
                    setQuestionView();
                }else{
                    Intent intent = new Intent(QuizMainActivity.this, QuizResultActivity.class);
                    Bundle b = new Bundle();
                    b.putInt("score", score); //Your score
                    intent.putExtras(b); //Put your score to your next Intent
                    startActivity(intent);
                    finish();
                }
            }
        });

        /**
         * Timer Coding
         */
        countDownTimer = (ProgressBar) findViewById(R.id.progressBar);
        timer = (TextView) findViewById(R.id.timer);

        new CountDownTimer(1200000,1000){

            @Override
            public void onTick(long millisUntilFinished) {
                int progress = (int) (millisUntilFinished/120000)+1;
                countDownTimer.setProgress(countDownTimer.getMax()-progress);
                if (counter == 1080){
                    Toast.makeText(QuizMainActivity.this, "Only 2 minutes remaining, Please review the answers.", Toast.LENGTH_SHORT).show();
                }
               counter++;
                Log.d("Counter number", ""+counter);
            }

            @Override
            public void onFinish() {
                Toast.makeText(QuizMainActivity.this, "Sorry! Time is over, Try again", Toast.LENGTH_LONG).show();
                finish();
            }
        }.start();
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        finish();
    }

    private void setQuestionView()
    {
        txtQuestion.setText(currentQ.getQUESTION());
        rda.setText(currentQ.getOPTA());
        rdb.setText(currentQ.getOPTB());
        rdc.setText(currentQ.getOPTC());
        qid++;
    }
}

When program runs and error throws the cursor denote to the following line of a code:-当程序运行并抛出错误时,光标表示以下代码行:-

currentQ=quesList.get(qid);

Please check the gelAllQuestions() function.请检查 gelAllQuestions() 函数。 First of all if the function not returning empty list, you should null check.首先,如果函数没有返回空列表,你应该空检查。 After that, you can check is the list empty with isEmpty() function.之后,您可以使用 isEmpty() 函数检查列表是否为空。

Please be sure there are available data in database.请确保数据库中有可用数据。

After create a List, you must implement it with it's constructor.创建 List 后,您必须使用它的构造函数来实现它。 So add this line before use your List:所以在使用你的列表之前添加这一行:

    quesList = new ArrayList<>();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Android设备上不在模拟器上的IndexOutOfBoundsException错误 - IndexOutOfBoundsException error on Android device not on emulator Android-App未在真实设备上运行 - Android-App not running on Real Device 从Android Studio在我的真实设备Makeng应用中运行时出现错误 - Have errors when running in my real device makeng app from android studio 在真实设备上运行应用程序时出现NoClassDefFoundError,而在模拟器上运行时则没有 - NoClassDefFoundError when running app on real device but not when running on an emulator 在eclipse android real设备上运行我的程序时,我在LogCat中遇到许多错误,这些错误以及如何解决? - When running my program on eclipse android real device i'm getting many errors in the LogCat what all this errors and how to fix them? 运行Dijkstra算法实现时的IndexOutOfBoundsException - IndexOutOfBoundsException when running Dijkstra's algorithm implementation 片段无法在真实设备中完美运行 - Fragments are not running perfectly in real device 无法在真实设备中运行应用 - trouble running app in real device android:layout_gravity =“ end”在真实设备中编译时不起作用 - android:layout_gravity=“end” not working when compiling in a real device 尝试将RowItem添加到ListView时,Android IndexOutOfBoundsException - Android IndexOutOfBoundsException when trying to add RowItem to ListView
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM