• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Apps Android crash when app is high score menu opened

I am new to android programming. I tried to execute a app from one of the tutorials and it is showing runtime error. If it runs highscores menu. Application closed. Below are the error messages from logcat and the activity file. Appreciate your help. Thanks in advance.

ERROR
HTML:
12-15 03:49:51.124: I/HighScores(1115): getScores() called
12-15 03:49:51.154: I/HighScores(1115): getScores() no scores found
12-15 03:49:51.354: I/Reversi, RevHSCustAd getView called(1115): position = 0
12-15 03:49:51.444: I/Reversi, RevHSCustAd getView called(1115): position = 0
12-15 03:49:51.454: D/AndroidRuntime(1115): Shutting down VM
12-15 03:49:51.454: W/dalvikvm(1115): threadid=1: thread exiting with uncaught exception (group=0xb2a40ba8)
12-15 03:49:51.594: D/dalvikvm(1115): GC_FOR_ALLOC freed 447K, 11% free 4353K/4880K, paused 89ms, total 100ms
12-15 03:49:51.714: E/AndroidRuntime(1115): FATAL EXCEPTION: main
12-15 03:49:51.714: E/AndroidRuntime(1115): Process: uk.co.flumeland.reversi, PID: 1115
12-15 03:49:51.714: E/AndroidRuntime(1115): java.lang.NullPointerException
12-15 03:49:51.714: E/AndroidRuntime(1115):     at uk.co.flumeland.reversi.RevHighScoreAdapter.getView(RevHighScoreAdapter.java:68)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.widget.AbsListView.obtainView(AbsListView.java:2263)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.widget.ListView.measureHeightOfChildren(ListView.java:1263)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.widget.ListView.onMeasure(ListView.java:1175)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.view.View.measure(View.java:16497)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.view.View.measure(View.java:16497)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.view.View.measure(View.java:16497)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.view.View.measure(View.java:16497)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.view.View.measure(View.java:16497)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1916)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1113)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1295)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.view.Choreographer.doCallbacks(Choreographer.java:574)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.view.Choreographer.doFrame(Choreographer.java:544)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.os.Handler.handleCallback(Handler.java:733)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.os.Handler.dispatchMessage(Handler.java:95)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.os.Looper.loop(Looper.java:136)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at android.app.ActivityThread.main(ActivityThread.java:5017)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at java.lang.reflect.Method.invokeNative(Native Method)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at java.lang.reflect.Method.invoke(Method.java:515)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
12-15 03:49:51.714: E/AndroidRuntime(1115):     at dalvik.system.NativeStart.main(Native Method)
12-15 03:49:51.864: W/CursorWrapperInner(1115): Cursor finalized without prior close()
12-15 03:49:54.184: I/Process(1115): Sending signal. PID: 1115 SIG: 9
HighScores.java

Java:
package uk.co.flumeland.reversi;

import java.util.ArrayList;

import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Typeface;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class HighScores extends Activity {

    private Score[] score = new Score[10];
    private ListView scoreList;
    private ContentResolver cr;
    private RevHighScoreAdapter rHSad;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_high_scores_screen);
        TextView title = (TextView) findViewById(R.id.title_textview);
        scoreList = (ListView) findViewById(R.id.high_score_list);
        Typeface tf = Typeface.createFromAsset(getAssets(),
                "fonts/tattoowoo_naughty-nights/Naughty Nights.ttf");
        title.setTypeface(tf);
        getScores();
        loadScores();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    }

    /**
     * Loads scores into the score ArrayList
     */
    public void getScores() {
        Log.i("HighScores", "getScores() called");
        cr = getContentResolver();
        Cursor c = cr.query(HighScoresData.CONTENT_URI, null, null, null,
                HighScoresData.KEY_SCORE + " DESC");
        // looping through all rows and adding to list
        int numScores = c.getCount();
        int i = 0;
        if (c != null && c.getCount() > 0) {
            c.moveToFirst();
            do {
                Log.i("HighScores", "getScores() = "
                                + c.getString(HighScoresData.NAME_COLUMN) + " "
                                + c.getString(HighScoresData.PHOTO_COLUMN) + " "
                                + c.getInt(HighScoresData.SCORE_COLUMN) + " " + i);
                score[i] = new Score(c.getString(HighScoresData.NAME_COLUMN),
                        c.getString(HighScoresData.PHOTO_COLUMN),
                        c.getInt(HighScoresData.SCORE_COLUMN));
                //score[i] = sc;
                i++;
            } while (c.moveToNext() && i < 10);
        } else {
            Log.i("HighScores", "getScores() no scores found");
        }
    }

    private void loadScores() {
    rHSad = new RevHighScoreAdapter(this, score);
    // Set the Adapter to GridView
    scoreList.setAdapter(rHSad);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.action_settings:
            startActivity(new Intent(this, Settings.class));
            return true;
        case R.id.action_how_to:
            startActivity(new Intent(this, HowTo.class));
            return true;
        case R.id.action_high_scores:
            startActivity(new Intent(this, HighScores.class));
            return true;
        }
        return false;
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        finish();
    }

}

activity_high_scores_screen.xml

HTML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/bkgrnd_col"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin" >

    <TextView
        android:id="@+id/title_textview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="@string/high_scores"
        android:textColor="@color/text_col_hd"
        android:textSize="@dimen/main_title"
        android:textStyle="bold" />

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
    </TableRow>

    <TableRow
        android:id="@+id/tableRow2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/hs_pic_t"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="2"
            android:text="PIC"
            android:textColor="@color/text_general" />

        <TextView
            android:id="@+id/hs_names_t"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:text="NAME"
            android:textColor="@color/text_general" />

        <TextView
            android:id="@+id/hs_scores_t"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="2"
            android:text="SCORE"
            android:textColor="@color/text_general" />
    </TableRow>

    <ListView
        android:id="@+id/high_score_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@color/text_general" >
    </ListView>

</LinearLayout>

RevHighScoreAdapter.java

Java:
package uk.co.flumeland.reversi;

import java.util.ArrayList;
import java.lang.String;

import android.app.Activity;
import android.content.Context;
import android.net.Uri;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class RevHighScoreAdapter extends ArrayAdapter {

    private Score[] scores;
    private Context context;

// Constructor
public RevHighScoreAdapter(Context context, Score[] score){
        super(context, 0);
        scores = score;
        this.context = context;
        }


    @Override
    public int getCount() {
        // length of list
        return scores.length;
    }

    @Override
    public Object getItem(int position) {
        // length of list
        return position;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        Log.i("Reversi, RevHSCustAd getView called", "position = " + position );

        if (row == null) {
            LayoutInflater inflater = ((Activity) context).getLayoutInflater();
            row = inflater.inflate(R.layout.high_scores_listview_row, parent, false);
        }
        TextView nameTV = (TextView) row.findViewById(R.id.hs_player_name_lv);
        ImageView photoIV = (ImageView) row.findViewById(R.id.hs_player_image_lv);
        TextView scoreTV = (TextView) row.findViewById(R.id.hs_score_lv);
        Log.i("Reversi, RevHSCustAd getView called", "position = " + position );

        //if (scores[position].getPhotolink() != null) {
            //photoIV.setImageURI(Uri.parse(scores[position].getPhotolink()));
        //} else {
            //photoIV.setImageResource(R.drawable.social_add_person);
        //}
            nameTV.setText(scores[position].getName());
            Log.i("Reversi, RevHSCustAd getView called", "position = " + position );
            scoreTV.setText(String.valueOf(scores[position].getScore()));

        return row;
    }
}
 

BEST TECH IN 2023

We've been tracking upcoming products and ranking the best tech since 2007. Thanks for trusting our opinion: we get rewarded through affiliate links that earn us a commission and we invite you to learn more about us.

Smartphones