Java 微调器内部拆分文本错误

Java 微调器内部拆分文本错误,java,android,string,split,spinner,Java,Android,String,Split,Spinner,我的微调器中有以下项目:Andrew-15。第一项是姓名,第二项是年龄。所以我想把它分成两部分,String1存储Andrew,String2存储15。这就是我的代码 public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { TextView myText = (TextView) view; Toast.makeText(this, "

我的微调器中有以下项目:Andrew-15。第一项是姓名,第二项是年龄。所以我想把它分成两部分,String1存储Andrew,String2存储15。这就是我的代码

public void onItemSelected(AdapterView<?> parent, View view, int position,
        long id) {

    TextView myText = (TextView) view;
    Toast.makeText(this, "Item selected"+myText.getText(),Toast.LENGTH_SHORT).show();
    String text = spinner.getSelectedItem().toString();
    String[] parts = text.split("-");
    String part1 = parts[0];
    String part2 = parts[1];    
}

如何修复此错误?任何帮助都将不胜感激。我的文本中有一个值,它是Andrew-15

它说的是
ArrayIndexOutOfBounds
。所以我猜这个字符串没有“-”。因此,拆分后的字符串数组将只有一项。因此,当您尝试获取第二项时,它会抛出异常。

//尝试这种方法,希望这对您有所帮助。。
// try this way,hope this will help you..

**activity1.xml**code
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

**Activity** code
    private Spinner spinner;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity1);

        final String[] spinnerValueArray = new String[]{"Andrew-15","Jack-20","John-25","Smith-18","Martin-15"};
        spinner = (Spinner) findViewById(R.id.spinner);

        ArrayAdapter<String> adapter =new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, spinnerValueArray);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);

        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String name;
                String version="";
                String [] values = spinnerValueArray[position].split("-");
                if(values.length > 1){
                    name = values[0];
                    version = values[1];
                }else{
                    name = values[0];
                }

                Toast.makeText(MyActivity.this,"Name : "+name+" Age : "+version,Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

    }
**activity1.xml**代码 **活动**代码 私人纺纱机; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity1); 最终字符串[]spinnerValueArray=新字符串[]{“Andrew-15”、“Jack-20”、“John-25”、“Smith-18”、“Martin-15”}; 微调器=(微调器)findViewById(R.id.spinner); ArrayAdapter=新的ArrayAdapter(此,android.R.layout.simple\u微调器\u项,微调器值数组); setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项); 旋转器。设置适配器(适配器); spinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){ @凌驾 已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){ 字符串名; 字符串版本=”; String[]values=spinnerValueArray[position]。拆分(“-”; 如果(值.length>1){ 名称=值[0]; 版本=值[1]; }否则{ 名称=值[0]; } Toast.makeText(MyActivity.this,“Name:+Name+”Age:+version,Toast.LENGTH_SHORT).show(); } @凌驾 未选择公共无效(AdapterView父级){ } }); }
ArrayIndexOutOfBoundsException
您的文本中是否有
-
文本的值是多少?我的文本中有一个值,它是Andrew-15
String Text=spinner.getSelectedItem().toString()在这行之后,放一个Log.v()或System.out.println(text);检查
text
变量显示的值。是的,我这样做了,它显示Andrew-15可能
text
的值为“”,因此它里面没有任何值。是的@Kedarnath在这种情况下获取零件[0]也应该抛出相同的异常。我的文本中有一个值,它是Andrew-15,您的日志显示:长度=1;指数=1。这意味着您的字符串[]只有一项。尝试调试和检查文本并检查其值。
// try this way,hope this will help you..

**activity1.xml**code
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

**Activity** code
    private Spinner spinner;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity1);

        final String[] spinnerValueArray = new String[]{"Andrew-15","Jack-20","John-25","Smith-18","Martin-15"};
        spinner = (Spinner) findViewById(R.id.spinner);

        ArrayAdapter<String> adapter =new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, spinnerValueArray);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);

        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String name;
                String version="";
                String [] values = spinnerValueArray[position].split("-");
                if(values.length > 1){
                    name = values[0];
                    version = values[1];
                }else{
                    name = values[0];
                }

                Toast.makeText(MyActivity.this,"Name : "+name+" Age : "+version,Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

    }