我为spinner编写了一个setOnItemSelectedListener,以便在更改微调器项时进行响应.我的要求是当我再次点击当前选择的项目时,应显示一个Toast.如何举办此活动?再次单击当前选定的项目时,微调器没有响应.`
StorageSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView adapter, View v, int i, long lng) {
Toast.makeText(getApplicationContext(), (CharSequence) StorageSpinner.getSelectedItem(), Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView arg0) {
Toast.makeText(getApplicationContext(), "Nothing selected", Toast.LENGTH_SHORT).show();
}
});
Run Code Online (Sandbox Code Playgroud) 我有一个OnItemSelectedListenerfor my Spinner,但是当所选项目与前一个项目相同时,它不会被调用.显然,OnClickListener这不是一个选项Spinner.每次用户点击某个项目时我都需要抓住.任何的想法?
也许这Spinner是ActionBar扰乱正常行为的事实?
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.tracklist_menu, menu);
Spinner spinner = (Spinner) menu.findItem(R.id.option_ordering_spinner)
.getActionView();
spinner.setAdapter(mSpinnerAdapter);
spinner.setSelection(PrefsHelper.getOrderingSpinnerPos(prefs));
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
String str = "selected";
System.out.println(str);
if (optionMenuInitialized) {
switch (position) {
case 0:
// rdm
getActivity()
.sendBroadcast(
new Intent(
MyIntentAction.DO_RESHUFFLE_PLAYLIST));
smp.setCurrentTracklistCursorPos(-1);
trackAdapter.notifyDataSetChanged();
break;
case 1:
// artist
getActivity()
.sendBroadcast(
new Intent(
MyIntentAction.DO_ORDER_PLAYLIST_BY_ARTIST)); …Run Code Online (Sandbox Code Playgroud) android listener spinner actionbarsherlock android-actionbar
如何创建一个打开日期选择器对话框的Android微调器?
我想要一个看起来像日历应用程序中的Spinner的Spinner,如下面的屏幕截图所示.

我已经尝试过的:
我在布局XML中创建了一个微调器,并尝试设置onclick属性来调用显示对话框的方法.当我在"点击"中输入方法名称时,我得到了错误,上面写着"找不到以下类: - Spinner(更改为android.widget.Spinner,修复构建路径,编辑XML)".
<Spinner
android:id="@+id/spinner1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="showDatePickerDialog" />
Run Code Online (Sandbox Code Playgroud)
showDatePickerDialog在正确的类中:
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "Date");
}
Run Code Online (Sandbox Code Playgroud)
这是DatePickerFragment(从其他网站复制):
import java.util.Calendar;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.os.Bundle;
import android.widget.DatePicker;
public class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day …Run Code Online (Sandbox Code Playgroud) 我想在用户选择微调器值时捕获onClick事件.
我已经尝试实现OnClickListener并使用以下代码:
@Override
public void onClick(final View view) {
if (view == countrySpinner) {
Toast.makeText(this, "Override OK!", 3);
}
}
Run Code Online (Sandbox Code Playgroud)
和绑定:
countrySpinner.setOnClickListener(this);
Run Code Online (Sandbox Code Playgroud)
这编译,但我得到RuntimeException建议我使用OnItemClickListener而不是OnClickListener一个AdapterView.
如何捕获onClick事件?
java.lang.RuntimeException是"不要为AdapterView调用setOnClickListener.你可能需要setOnItemClickListener,"但这不正确.我正在使用setOnItemClickListener根据新选择做一些事情,但我还需要在用户更改选择之前做一些事情.具体来说,我正在为移动到另一个选择之前需要保存到文件的每个选择收集数据,因为另一个选择与不同的数据集相关联.有没有办法将setOnClickListener与Android Spinner一起使用?
spinner.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Do some stuff before the user changes the selection
...
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent,
View view, int pos, long id) {
// Do some stuff based onItemSelected
...
Run Code Online (Sandbox Code Playgroud)