Java 微调器内部拆分文本错误
我的微调器中有以下项目:Andrew-15。第一项是姓名,第二项是年龄。所以我想把它分成两部分,String1存储Andrew,String2存储15。这就是我的代码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, "
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-15String 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) {
}
});
}