微调项未分配给 String 变量并在 android 中给出 null
Spinner item not getting assigned to String variable and giving null in android
我在从 Spinners 获取值以存储在 String 变量中并不断获取 null 时遇到问题。我创建了全局变量以在外部函数中访问它们的值 -
这是我的代码 -
package com.shaikhsakib.mycustomspinner;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{
String[] countryNames={"INR","CNY","AUD","EUR","USD","NZD"};
int flags[] = {R.drawable.india, R.drawable.china, R.drawable.australia, R.drawable.portugel, R.drawable.new_zealand};
private String from, to = "";
private Spinner spin, spin2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Getting the instance of Spinner and applying OnItemSelectedListener on it
spin = (Spinner) findViewById(R.id.fromSpinner);
TextView from = (TextView) findViewById(R.id.fromLabel);
spin2 = (Spinner) findViewById(R.id.toSpinner);
TextView to = (TextView) findViewById(R.id.toLabel);
Button btn = (Button) findViewById(R.id.button);
spin.setOnItemSelectedListener(this);
spin2.setOnItemSelectedListener(this);
CustomAdapter customAdapter=new CustomAdapter(getApplicationContext(),flags,countryNames);
spin.setAdapter(customAdapter);
spin2.setAdapter(customAdapter);
}
public void convert(View view) {
spin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
from = parent.getItemAtPosition(1).toString();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
spin2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
from = parent.getItemAtPosition(1).toString();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
TextView result = (TextView) findViewById(R.id.result);
result.setText("From value: " + from );
}
//Performing action onItemSelected and onNothing selected
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//gendervalue = parent.getItemAtPosition(position).toString();
// Object item = parent.getItemAtPosition(position);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
}
我已经从中创建了全局变量,并向其分配了项目选择的微调器值作为字符串,但仍然得到 "From value: null"。
试试这个
spin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String var=countryNames[position];
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
@Override
public void onUserInteraction() {
super.onUserInteraction();
isUserInteracting = true;
}
mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView adapterView, View view, int i, long l) {
if (isUserInteracting) {
Toast.makeText(MainActivity.this,
spinnerTitles[i], Toast.LENGTH_SHORT).show();
}
}
@Override
public void onNothingSelected(AdapterView adapterView) {
}
});
使用
from = parent.getItemAtPosition(position).toString();
而不是
from = parent.getItemAtPosition(1).toString();
你没有打电话给convert(View view)
parent.getItemAtPosition(1).toString()
应该是 parent.getItemAtPosition(position).toString()
我在从 Spinners 获取值以存储在 String 变量中并不断获取 null 时遇到问题。我创建了全局变量以在外部函数中访问它们的值 -
这是我的代码 -
package com.shaikhsakib.mycustomspinner;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{
String[] countryNames={"INR","CNY","AUD","EUR","USD","NZD"};
int flags[] = {R.drawable.india, R.drawable.china, R.drawable.australia, R.drawable.portugel, R.drawable.new_zealand};
private String from, to = "";
private Spinner spin, spin2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Getting the instance of Spinner and applying OnItemSelectedListener on it
spin = (Spinner) findViewById(R.id.fromSpinner);
TextView from = (TextView) findViewById(R.id.fromLabel);
spin2 = (Spinner) findViewById(R.id.toSpinner);
TextView to = (TextView) findViewById(R.id.toLabel);
Button btn = (Button) findViewById(R.id.button);
spin.setOnItemSelectedListener(this);
spin2.setOnItemSelectedListener(this);
CustomAdapter customAdapter=new CustomAdapter(getApplicationContext(),flags,countryNames);
spin.setAdapter(customAdapter);
spin2.setAdapter(customAdapter);
}
public void convert(View view) {
spin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
from = parent.getItemAtPosition(1).toString();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
spin2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
from = parent.getItemAtPosition(1).toString();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
TextView result = (TextView) findViewById(R.id.result);
result.setText("From value: " + from );
}
//Performing action onItemSelected and onNothing selected
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//gendervalue = parent.getItemAtPosition(position).toString();
// Object item = parent.getItemAtPosition(position);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
}
我已经从中创建了全局变量,并向其分配了项目选择的微调器值作为字符串,但仍然得到 "From value: null"。
试试这个
spin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String var=countryNames[position];
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
@Override
public void onUserInteraction() {
super.onUserInteraction();
isUserInteracting = true;
}
mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView adapterView, View view, int i, long l) {
if (isUserInteracting) {
Toast.makeText(MainActivity.this,
spinnerTitles[i], Toast.LENGTH_SHORT).show();
}
}
@Override
public void onNothingSelected(AdapterView adapterView) {
}
});
使用
from = parent.getItemAtPosition(position).toString();
而不是
from = parent.getItemAtPosition(1).toString();
你没有打电话给
convert(View view)
parent.getItemAtPosition(1).toString()
应该是parent.getItemAtPosition(position).toString()