2015-02-19 4 views
0

Я просто изучаю разработку приложений для Android, и я не понимаю, как Log значение выбранного элемента из счетчика.Как получить значение выбранного элемента в прядильщике?

Вот что я для MainActivity.java

import android.content.ContentResolver; 
import android.database.Cursor; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Spinner; 
import android.provider.ContactsContract; 

import java.util.ArrayList; 

    public class MainActivity extends ActionBarActivity { 
     public Spinner contactSpinner = (Spinner) findViewById(R.id.contact_list); 

    protected void onCreate(Bundle savedInstanceState) { 
     ArrayList contactList = new ArrayList(); 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     contactList.add("An item"); 
     contactList.add("Another item"); 
     contactList.add("A third item"); 

     // Add items from contactList to spinner 
     ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_dropdown_item,contactList); 
     contactSpinner.setAdapter(adapter); 
    } 

    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
     // An item was selected. You can retrieve the selected item using 
     parent.getItemAtPosition(pos); 

    } 

    public void onNothingSelected(AdapterView<?> parent) { 
     // Another interface callback 
    } 

    contactSpinner.setOnItemSelectedListener(this); 
} 

Я следую Андроида Дев документы на responding to user selections, но с моим кодом, я получаю эту ошибку: Could not resolve symbol setOnItemSelectedListener

Почему? И как я могу исправить это, чтобы я мог Log выбрать, что было выбрано в Spinner?

EDIT

Этот код работает

package com.example.compy.spookr; 

общественного класса MainActivity расширяет ActionBarActivity реализует AdapterView.OnItemSelectedListener { общественного Spinner contactSpinner;

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    ArrayList contactList = new ArrayList(); 
    contactSpinner = (Spinner) findViewById(R.id.contact_list); 
    contactSpinner.setOnItemSelectedListener(this); 
    // Rest of code... 
} 

@Override 
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
    // An item was selected. You can retrieve the selected item using 
    parent.getItemAtPosition(pos); 
    Log.v("onItemSelected",(String) parent.getItemAtPosition(pos)); 
} 

@Override 
public void onNothingSelected(AdapterView<?> parent) { 
    // Another interface callback 
} 

// Rest of code ... 

}

+0

Вы пытаетесь выполнить код за пределами кодового блока. Вам нужно переместить 'contactSpinner.setOnItemSelectedListener (this);' в один из ваших методов. –

ответ

1

Прежде всего, вы должны реализовать interface, который вы хотите использовать методы. В вашем случае, вы могли бы сделать это следующим образом:

public class MainActivity extends ActionBarActivity implements OnItemSelectedListener{ 

Затем положить @Override на методах описания поведения вы хотите:

@Override 
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
// An item was selected. You can retrieve the selected item using 
parent.getItemAtPosition(pos); 

}

@Override 
    public void onNothingSelected(AdapterView<?> parent) { 
// Another interface callback 

}

А затем настройте свой счетчик в вашем onCreate():

protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
contactSpinner = (Spinner) findViewById(R.id.contact_list); 
contactSpinner.setOnItemSelectedListener(this); 
.... 
1

I get this error: Could not resolve symbol setOnItemSelectedListener

Реализация OnItemSelectedListener интерфейса в MainActivity:

public class MainActivity extends ActionBarActivity 
           implements OnItemSelectedListener{ 
    .... 
} 

Добавить setOnItemSelectedListener к Spinner внутри onCreate метода:

public Spinner contactSpinner; 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    contactSpinner = (Spinner) findViewById(R.id.contact_list); 
    contactSpinner.setOnItemSelectedListener(this); 
    //... your code here.. 
} 

, а также называют findViewById после настройки макета для текущей деятельности, поскольку вид из XML, доступного только после установки макета для деятельности других премудрого приложения будет врезаться с NPE

1

Вы можете использовать метод getSelectedItem():

Spinner spinner = (Spinner)findViewById(R.id.spinner); 
String selected = spinner.getSelectedItem().toString(); 

метод или с помощью getItemAtPosition():

public class SpinnerActivity extends Activity implements OnItemSelectedListener { 
    ... 
    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, 
      int pos, long id) { 
     // An item was selected. You can retrieve the selected item using 
     // parent.getItemAtPosition(pos) 
    } 
} 
Смежные вопросы