2015-06-03 4 views
0

Я знаю, что это, вероятно, простой вопрос относительно относительности, но я, кажется, не замечаю ответа.Установить выбор по умолчанию для счетчика

В моем приложении у меня есть счетчик, чтобы пользователь мог выбрать состояние, в котором они живут. В настоящее время приложение будет фокусироваться на местной аудитории, поэтому я хотел бы установить выбор по умолчанию как состояние, которое они жить в

Я пытался делать:.

registration_screen.xml

<Spinner 
    android:id="@+id/spinHomeState" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_column="1" 
    android:entries="@array/state_list" 
    android:prompt="@string/state_prompt" 
    android:spinnerMode="dialog"/> 

RegistrationScreen.java

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.registration_screen); 

    Spinner HomeStateSpinner = (Spinner) findViewById(R.id.spinHomeState); 
    HomeStateSpinner.setSelection('9'); 
} 

но приложение падает со следующими бревнами LogCat:

06-03 13: 52: 44,512
1736-1736/com.name.of.app E/AndroidRuntime: FATAL ИСКЛЮЧЕНИЕ: Основной процесса: com.hollywoodcert.soupserver.hollywoodcert, ПИД: 1736 java.lang.IndexOutOfBoundsException: недействительный индекс 57, размер 50 в java.util.ArrayList.throwIndexOutOfBoundsException (ArrayList.java:255) на Java .util.Arrays $ ArrayList.get (Arrays.java:66)на android.widget.ArrayAdapter.getItem (ArrayAdapter.java:337) в android.widget.ArrayAdapter.createViewFromResource (ArrayAdapter.java:390) в android.widget.ArrayAdapter.getView (ArrayAdapter.java:362) на android.widget.Spinner.makeView (Spinner.java:592) на android.widget.Spinner.layout (Spinner.java:540) на android.widget.Spinner.onLayout (Spinner.java:502) на android. view.View.layout (View.java:14817) на android.view.ViewGroup.layout (ViewGroup.java:4631) на android.widget.LinearLayout.setChildFrame (LinearLayout.java:1671) на android.widget. LinearLayout.layoutHorizontal (LinearLayout.java:1660) на android.widget.Tabl eRow.onLayout (TableRow.java:123) на android.view.View.layout (View.java:14817) на android.view.ViewGroup.layout (ViewGroup.java:4631) на android.widget.LinearLayout. setChildFrame (LinearLayout.java:1671) на android.widget.LinearLayout.layoutVertical (LinearLayout.java:1525) на android.widget.TableLayout.onLayout (TableLayout.java:448) на android.view.View.layout (View.java:14817) на android.view.ViewGroup.layout (ViewGroup.java:4631) на android.widget.FrameLayout.layoutChildren (FrameLayout.java:453) на android.widget.FrameLayout.onLayout (FrameLayout. java: 388) на android.widget.ScrollView.onLayout (ScrollView.java:1468) на android.view.View.layout (View.java:14817) на android.view.ViewGroup.layout (ViewGroup.java:4631) на android.widget.FrameLayout.layoutChildren (FrameLayout.java:453) на android .widget.FrameLayout.onLayout (FrameLayout.java:388) на android.view.View.layout (View.java:14817) на android.view.ViewGroup.layout (ViewGroup.java:4631) на android.support .v7.internal.widget.ActionBarOverlayLayout.onLayout (ActionBarOverlayLayout.java:493) на android.view.View.layout (View.java:14817) на android.view.ViewGroup.layout (ViewGroup.java:4631) на android.widget.FrameLayout.layoutChildren (FrameLayout.java:453) на android.widget.FrameLayout.onLayout (FrameLayout.java:388) на android.view.View.layout (View.java:14817) на android.view.ViewGroup.layout (ViewGroup.java:4631) на android.widget.LinearLayout.setChildFrame (LinearLayout.java:1671) на android.widget.LinearLayout.layoutVertical (LinearLayout. java: 1525) на android.widget.LinearLayout.onLayout (LinearLayout.java:1434) на android.view.View.layout (View.java:14817) на android.view.ViewGroup.layout (ViewGroup.java: 4631) на android.widget.FrameLayout.layoutChildren (FrameLayout.java:453) на android.widget.FrameLayout.onLayout (FrameLayout.java:388) на android.view.View.layout (View.java:14817) на android.view.ViewGroup.layout (ViewGroup.java:4631) at android.view.ViewRootImpl.performLayout (ViewRootImpl.java:1987) на android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1744) на android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1000) на андроид. view.ViewRootImpl $ TraversalRunnable.run (ViewRootImpl.java:5670) на android.view.Choreographer $ CallbackRecord.run (Хореограф.java:761) на android.view.Choreographer.doCallbacks (Хореограф.java:574) на android.view.Choreographer.doFrame (Хореограф.java:544) at android.view.Choreographer $ FrameDisplayEventReceiver.run (Хореограф.java:747) на android.os.Handler.handleCallback (Handler.java:733) на android.os.Handler.dispatchMessage (Handler.java:95) at android.os.Looper.loop (Looper.java:136) at android.app.ActivityThread.main (ActivityThread.java:5017) at java.lang.reflect.Method.invokeNative (собственный метод) at java.lang .reflect.Method.invoke (Method.java:515) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main (ZygoteInit .java: 595) at dalvik.system.NativeStart.main (родной метод)

Буду признателен за любые советы.

ответ

1

Согласно андроид документации, метод Spinner setSelection получает либо int или int и boolean аргументы.

В вашем коде вы звоните HomeStateSpinner.setSelection('9');, передавая char в качестве аргумента. Другое дело, что бросок java.lang.IndexOutOfBoundsException означает, что вы пытаетесь получить доступ к позиции за пределами массива, установленного на счетчике.

Мой первый является предложение приемлемо, чтобы попытаться вызвать метод следующим образом:

HomeStateSpinner.setSelection(9); 

И если это не сработает, попробуйте вызвать его с более низким значением, как:

HomeStateSpinner.setSelection(2); 
+0

Спасибо! ! Первоначально я собирался написать такую ​​команду, но сначала Android Studio показала, что это не правильно (красная squiggly линия). Возможно, я был слишком быстр. – CampSoup1988

0

Используйте это:

String compareValue = "9"; 

     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
       R.layout.spinner_layout, list); 
     dataAdapter.setDropDownViewResource(R.layout.spinner_layout); 
     rooms.setAdapter(dataAdapter); 
     if (!compareValue.equals(null)) { 
      int spinnerPostion = dataAdapter.getPosition(compareValue); 
      HomeStateSpinner.setSelection(spinnerPostion); 
      spinnerPostion = 0; 
     } 

если 9 является использованием строки выше решения, еще 9 является индекс/положением, в котором вы хотите установить выбранные затем просто использовать:

HomeStateSpinner.setSelection(9); 

Это необходимо решить вашу проблему.

Смежные вопросы