fix NPE in studylist; cleanup duplicated method

This commit is contained in:
Eric House 2014-06-23 21:44:21 -07:00
parent 4d9c7c97ba
commit 7e515b19c9
4 changed files with 11 additions and 38 deletions

View file

@ -814,7 +814,7 @@ public class BoardDelegate extends DelegateBase
cmd = JNICmd.CMD_TOGGLE_TRAY; cmd = JNICmd.CMD_TOGGLE_TRAY;
break; break;
case R.id.games_menu_study: case R.id.games_menu_study:
StudyListActivity.launchOrAlert( m_activity, m_gi.dictLang, this ); StudyListDelegate.launchOrAlert( m_activity, m_gi.dictLang, this );
break; break;
case R.id.board_menu_game_netstats: case R.id.board_menu_game_netstats:
m_jniThread.handle( JNICmd.CMD_NETSTATS, R.string.netstats_title ); m_jniThread.handle( JNICmd.CMD_NETSTATS, R.string.netstats_title );

View file

@ -749,7 +749,7 @@ public class GamesListDelegate extends ListDelegateBase
break; break;
case R.id.games_menu_study: case R.id.games_menu_study:
StudyListActivity.launchOrAlert( m_activity, StudyListDelegate.NO_LANG, this ); StudyListDelegate.launchOrAlert( m_activity, StudyListDelegate.NO_LANG, this );
break; break;
case R.id.games_menu_about: case R.id.games_menu_about:

View file

@ -19,46 +19,16 @@
package org.eehouse.android.xw4; package org.eehouse.android.xw4;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import junit.framework.Assert;
import org.eehouse.android.xw4.loc.LocUtils;
public class StudyListActivity extends XWListActivity { public class StudyListActivity extends XWListActivity {
private StudyListDelegate m_dlgt;
@Override @Override
protected void onCreate( Bundle savedInstanceState ) protected void onCreate( Bundle savedInstanceState )
{ {
m_dlgt = new StudyListDelegate( this, savedInstanceState ); StudyListDelegate dlgt =
super.onCreate( savedInstanceState, m_dlgt ); new StudyListDelegate( this, savedInstanceState );
super.onCreate( savedInstanceState, dlgt );
} }
public static void launchOrAlert( Context context, int lang,
DlgDelegate.HasDlgDelegate dlg )
{
String msg = null;
if ( 0 == DBUtils.studyListLangs( context ).length ) {
msg = LocUtils.getString( context, R.string.study_no_lists );
} else if ( StudyListDelegate.NO_LANG != lang &&
0 == DBUtils.studyListWords( context, lang ).length ) {
String langname = DictLangCache.getLangName( context, lang );
msg = LocUtils.getString( context, R.string.study_no_lang_fmt, langname );
} else {
Intent intent = new Intent( context, StudyListActivity.class );
if ( StudyListDelegate.NO_LANG != lang ) {
intent.putExtra( StudyListDelegate.START_LANG, lang );
}
context.startActivity( intent );
}
if ( null != msg ) {
dlg.showOKOnlyDialog( msg );
}
}
} }

View file

@ -38,6 +38,7 @@ import android.widget.ListView;
import android.widget.Spinner; import android.widget.Spinner;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set;
import java.util.Iterator; import java.util.Iterator;
import junit.framework.Assert; import junit.framework.Assert;
@ -50,7 +51,7 @@ public class StudyListDelegate extends ListDelegateBase
implements OnItemSelectedListener, SelectableItem, implements OnItemSelectedListener, SelectableItem,
View.OnLongClickListener, View.OnClickListener { View.OnLongClickListener, View.OnClickListener {
public static final int NO_LANG = -1; protected static final int NO_LANG = -1;
protected static final String START_LANG = "START_LANG"; protected static final String START_LANG = "START_LANG";
@ -59,7 +60,7 @@ public class StudyListDelegate extends ListDelegateBase
private View m_pickView; // LinearLayout, actually private View m_pickView; // LinearLayout, actually
private int[] m_langCodes; private int[] m_langCodes;
private String[] m_words; private String[] m_words;
private HashSet<Integer> m_checkeds; private Set<Integer> m_checkeds;
private int m_langPosition; private int m_langPosition;
private SLWordsAdapter m_adapter; private SLWordsAdapter m_adapter;
private ListView m_list; private ListView m_list;
@ -78,6 +79,7 @@ public class StudyListDelegate extends ListDelegateBase
m_spinner = (Spinner)findViewById( R.id.pick_lang_spinner ); m_spinner = (Spinner)findViewById( R.id.pick_lang_spinner );
m_pickView = findViewById( R.id.pick_lang ); m_pickView = findViewById( R.id.pick_lang );
m_checkeds = new HashSet<Integer>();
initOrFinish( getIntent() ); initOrFinish( getIntent() );
} }
@ -247,7 +249,8 @@ public class StudyListDelegate extends ListDelegateBase
{ {
int lang = m_langCodes[m_langPosition]; int lang = m_langCodes[m_langPosition];
m_words = DBUtils.studyListWords( m_activity, lang ); m_words = DBUtils.studyListWords( m_activity, lang );
m_checkeds = new HashSet<Integer>();
m_checkeds.clear();
makeAdapter(); makeAdapter();