首页 文章

设置微调器的默认选择

提问于
浏览
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 EXCEPTION:main进程:com.hollywoodcert.soupserver.hollywoodcert,PID:1736 java.lang.IndexOutOfBoundsException:索引57无效,java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)中的java为70. java.util.Arrays $ ArrayList.get(Arrays.java:66)at 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.view.View.Loutout(Spinner.java:502)的android.view.View.layout(View.java:14817)android.view.ViewGroup.layout( ViewGroup.java:4631)在Android.widget.TableRow.onLayout(TableRow.java:123)上的android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1660) ) 晒黑在Android.widget.LinearLayout的android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)的android.view.ViewGroup.layout(ViewGroup.java:4631)上的droid.view.View.layout(View.java:14817) .layoutVertical(LinearLayout.java:1525)位于android.view.View.Loutout(TableLayout.java:448)的android.view.View.layout(View.java:14817),位于android.view.ViewGroup.layout(ViewGroup . java:4631)在android.widget.FrameLayout.onoutChildout(FrameLayout.java:453)的android.widget.FrameLayout.onLayout(FrameLayout.java:388)android.widget.ScrollView.onLayout(ScrollView.java:1468)at Android.widget.FrameLayout上的android.view.Viewout.layout(View.java:14817)在android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)的android.view.ViewGroup.layout(ViewGroup.java:4631) .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.Viewout中的android.view.View.layout(View.java:14817),在android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)的android.view.layout(ViewGroup.java:4631)在Android.widget.LinearLayout的android.view.View.layout(ViewGroup.java:4631)的android.widget.FrameLayout.onLayout(FrameLayout.java:388) .setChildFrame(LinearLayout.java:1671)在Android.widget.Line中的android.widget.LinearLayout.onoutVayical(LinearLayout.java:1525),android.view.Loutout(LinearLayout.java:1434)在android.view.View.layout(View . java:14817)在Android.widget.FrameLayout.onLayout(FrameLayout.java:388)的android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)的android.view.ViewGroup.layout(ViewGroup.java:4631) android.view.View.Loutout(View.java:14817)位于android.view.View.Louout(ViewRootImpl.java:1987)的android.view.View.View( . .performTraversals(ViewRootImpl.java:174 4)在android.view.ViewRootImpl上的android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000),在android.view.Choreographer $ TraversRecord.run(Choreographer.java:761)的TraversalRunnable.run(ViewRootImpl.java:5670) )android.view.Chocographer.doCallbacks(Choreographer.java:574)在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:747)的android.view.Choreographer.doFrame(Choreographer.java:544) .os.Handler.handleCallback(Handler.java:733)位于android.app.A.运行时,android.O.Roler.jopage(Handler.java:95),android.app.Loper.loop(Looper.java:136),android.app.ActivityThread . main(ActivityThread.java:5017)java.lang.reflect.Method.invokeNative(Native Method),位于com.android.internal.os.ZygoteInit $的java.lang.reflect.Method.invoke(Method.java:515)位于dalvik.system.NativeStart.main(本地方法)的com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)中的MethodAndArgsCaller.run(ZygoteInit.java:779)

我很感激任何建议 .

2 回答

  • 0

    根据android文档,Spinner方法 setSelection 接收 intintboolean 参数 .

    在您的代码中,您调用 HomeStateSpinner.setSelection('9'); 传递 char 作为参数 . 另一件事是抛出 java.lang.IndexOutOfBoundsException 意味着你试图访问微调器上数组集之外的位置 .

    我的第一个尝试是尝试调用这样的方法:

    HomeStateSpinner.setSelection(9);
    

    如果这不起作用,请尝试使用较低的值调用它,如:

    HomeStateSpinner.setSelection(2);
    
  • 1

    用这个:

    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);
    

    这必须解决你的问题 .

相关问题