2017-08-23 128 views
0

我试了几个小时才能从我的微调对象中获得项目,但我总是从微调数组中获得第一项。 该数组在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); 
        (...) 

回答

0

而是这行:

Object item = spinner.getItemAtPosition(position); 

尝试使用这一个:

Object item = parent.getItemAtPosition(position) 

另外,你加入在你的代码行下面?

Spinner spinner = (Spinner) findViewById(R.id.spinner); 
spinner.setOnItemSelectedListener(this); 
+0

没有happend,我加了System.out的,但看起来这种方法从未被激活 – LimoFlasch

+0

为什么你叫setContenView(...)的两倍?具有不同的参数? – Danger

+0

这是我发现防止微调对象的空对象引用的唯一方法。微调器在aleart对话框中使用 – LimoFlasch