0

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

    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

RevHighScoreAdapter.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;
    }
}

HighScores.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

    <?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>
2
Contributors
3
Replies
13
Views
3 Years
Discussion Span
Last Post by cool_zephyr
0

Do I need to fix this

      <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
        </TableRow>
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.