Android工作室 - 微调 - 获取微调项目不起作用
问题描述:
我试了几个小时才能从我的微调对象中获得项目,但我总是从微调数组中获得第一项。 该数组在string.xml中定义。 这个错误是由不同的上下文造成的吗? 当我只用getSelectedItem命令,我得到一个空指针引用Android工作室 - 微调 - 获取微调项目不起作用
String taskName;
String taskTag;
Spinner spinner;
ArrayAdapter<CharSequence> adapter;
public void newTaskName() {
final AlertDialog.Builder taskBuilder = new AlertDialog.Builder(MainActivity.this);
final View bView = getLayoutInflater().inflate(R.layout.dialog_taskname, null);
final EditText bTaskName = (EditText) bView.findViewById(R.id.taskNameEditText);
Button buttonAdd = (Button) bView.findViewById(R.id.buttonAdd);
Button buttonBack = (Button) bView.findViewById(R.id.buttonBack);
taskBuilder.setView(bView);
final AlertDialog dialog = taskBuilder.create();
dialog.show();
buttonAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!bTaskName.getText().toString().isEmpty()) {
taskName = bTaskName.getText().toString();
taskTag = (String) spinner.getSelectedItem();
dialog.dismiss();
System.out.println("Das ist der Tag: "+ taskTag);
newTask(taskName, taskTag);
} else {
(...)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_taskname);
spinner = (Spinner) findViewById(R.id.spinner_WT);
adapter = ArrayAdapter.createFromResource(this, R.array.array_wochentage, android.R.layout.simple_spinner_item);
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) {
Object item = spinner.getItemAtPosition(position);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
setContentView(R.layout.activity_main);
(...)
答
而是这行:
Object item = spinner.getItemAtPosition(position);
尝试使用这一个:
Object item = parent.getItemAtPosition(position)
另外,你加入在你的代码行下面?
Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setOnItemSelectedListener(this);
没有happend,我加了System.out的,但看起来这种方法从未被激活 – LimoFlasch
为什么你叫setContenView(...)的两倍?具有不同的参数? – Danger
这是我发现防止微调对象的空对象引用的唯一方法。微调器在aleart对话框中使用 – LimoFlasch