标签: spinner

选择Android Spinner会导致WindowManager $ BadTokenException

我创建了一个自定义AlertDialog来显示Spinner和一些EditText元素.当我选择菜单选项时,会启动此自定义AlertDialog.一切正常,直到我实际选择微调器来尝试选择一个项目,此时我得到了BadTokenException.我已经读过其他StackOverflow帖子,说类似的异常是尝试使用getApplicationContext()而不是传递Activity.this来显示diaglog的结果.我没有明确地将getApplicationContext()传递给与此AlertDialog相关的任何内容.

为了设置这个自定义AlertDiaglog,我创建了一个包含Spinner和EditText元素的布局文件,然后使AlertDialog使用该布局:

LayoutInflater inflater = (LayoutInflater)getApplication().getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.custom_layout, (ViewGroup)findViewById(R.id.custom_layout_root));
spinner = (Spinner)layout.findViewById(R.id.custom_layout_spinner);
ArrayAdapter adap = ArrayAdapter.createFromResource(Activity.this, R.array.data, android.R.layout.simple_spinner_item);
adap.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adap);
spinner.setOnItemSelectedListener(new SpinnerItemListener());

AlertDialog.Builder dialog = new AlertDialog.Builder(Activity.this);
dialog.setTitle("Title");
dialog.setPositiveButton("Ok", new Dialog.OnClickListener() ...
...
dialog.show();
Run Code Online (Sandbox Code Playgroud)

此代码都可以正常显示AlertDialog.但是,当我实际触摸Spinner时,我遇到以下问题:

Thread [<3> main] (Suspended (exception WindowManager$BadTokenException)) 
ViewRoot.handleMessage(Message) line: 1704
ViewRoot(Handler).dispatchMessage(Message) line: 99 
Looper.loop() line: 123 
ActivityThread.main(String[]) line: 4203
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 521
ZygoteInit$MethodAndArgsCaller.run() line: 791
ZygoteInit.main(String[]) line: 549
NativeStart.main(String[]) line: not …
Run Code Online (Sandbox Code Playgroud)

android exception spinner

1
推荐指数
1
解决办法
3876
查看次数

基于Spinner 1中的选择动态更新Spinner2

在使用此代码(从此处改编)时,我收到以下错误:

构造函数ArrayAdapter(new AdapterView.OnItemSelectedListener(){},int,String [])未定义

有人可以帮忙纠正这个吗?谢谢

private void setDynamicSpinnerBE() {
    beSpinner = (Spinner) findViewById(R.id.spBE);
    final String[] itemsSpinner2;
    lensSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        public void onItemSelected(AdapterView<?> parent, View view,
                int position, long id) {
            Integer focalLength = (Integer) parent.getAdapter().getItem(
                    position);
            itemsSpinner2 = getBellowsExtension(focalLength, maxBellows,
                    precision);

            ArrayAdapter<CharSequence> beAdapter = new ArrayAdapter<CharSequence>(
                    this, android.R.layout.simple_spinner_item,
                    itemsSpinner2);
            beAdapter
                    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            beSpinner.setAdapter(beAdapter);

        }

        public void onNothingSelected(AdapterView<?> parent) {
            beSpinner.setAdapter(null);
        }
    }

    );
    ...
}
Run Code Online (Sandbox Code Playgroud)

java android dynamic spinner

1
推荐指数
1
解决办法
2408
查看次数

simple_spinner_dropdown_item - 视图大小

我正在尝试在我的UI中使用simple_spinner_item和simple_spinner_dropdown_item之间做出决定......所以我把两个都放在屏幕上来连续尝试它们.虽然我更喜欢... dropdown_item的扩展样式,它的未扩展大小比... spinner_item大,我不知道为什么,因为xml定义没有区别......只是执行不同的通过Java查看,

例如

ArrayAdapter<String> adapter1 = new ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, arrayOfSomeStrings); //set the adapter to 
Run Code Online (Sandbox Code Playgroud)

spinner1

VS

ArrayAdapter<String adapter2> = new ArrayAdapter(this,android.R.layout.simple_spinner_item, arrayOfSomeMoreStrings);  //set the adapter to spinner2
Run Code Online (Sandbox Code Playgroud)

在我看来,simple_spinner_dropdown_item必须有不同的prefferedHeight/size或者什么......这是真的吗?以及我如何覆盖它并使两个微调器在UI上看起来相同,直到扩展?

android spinner

1
推荐指数
1
解决办法
4753
查看次数

从url IOS下载uimageview时未显示微调器

当从一个视图移动到另一个视图时,我想在我的第二个视图中,只要下载图像以查看微调器(这样第二个视图将立即打开而不需要任何时间,并且用户等待微调器完).

这是我的代码:

在第二个视图中,打开的视图:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    UIActivityIndicatorView *spinner=[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    spinner.center=CGPointMake(160.0,240.0 );
    spinner.hidesWhenStopped=YES;
    [self.view addSubview:spinner];
    [spinner startAnimating];

NSString *urlString=[NSString stringWithFormat:@"http://mysite.com/projects/test/test.jpg"];

    NSLog(@"URL is:%@",urlString);
    NSURL *url=[NSURL URLWithString:urlString];
    [more_info_image setImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:url]]];

    [spinner stopAnimating];
}
Run Code Online (Sandbox Code Playgroud)

我根本看不到旋转器.我不认为这是因为我的互联网连接太胖了.另一方面,当按下按钮并等待视图打开时,我看到一点延迟 - 就像它试图下载图像的时候一样.

我想打开视图,拥有微调器,下载图像然后让微调器消失.

我必须改变什么吗?

lazy-loading spinner ios

1
推荐指数
1
解决办法
1002
查看次数

Android:spinner setSelection不起作用

我无法使用我的微调器setSelection()方法解决问题.我正在编写一个程序来保存数据,我从数据库中的某种表中获取数据.当用户打开程序时,它从数据库加载数据并添加3个空"表"行,以便用户可以填充并保存.当加载来自数据库的数据时,我需要正确设置微调器的选择,但是当我尝试我的代码时,它只是不起作用,并且屏幕上的所有微调器都会出现,并且选择了0项.这是我的代码.
OnCreate()方法:

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.data);

    dbHelper = new DBHelper(this);
    content = (LinearLayout) findViewById(R.id.content);
    inflater = getLayoutInflater();

    Calendar c = Calendar.getInstance(); 
    cur_year = c.get(Calendar.YEAR);
    cur_month = c.get(Calendar.MONTH);
    cur_day = c.get(Calendar.DAY_OF_MONTH);

    load_array();
    load_database();

    for (int i = 0; i < EMPTY_LINES_TO_DRAW; i++) {
        draw();
    }
}
Run Code Online (Sandbox Code Playgroud)

load_array()是一个加载数组"供应商"(来自文件)的函数,然后我将它放入我的微调器适配器中.
load_database()函数:

private void load_database() {
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    Cursor c = db.query("mytable", null, null, null, null, null, null);

    if (c.moveToFirst()) {

        int date_1_Index = c.getColumnIndex("date_1");
        int key_Index = c.getColumnIndex("key_field"); …
Run Code Online (Sandbox Code Playgroud)

android spinner android-spinner

1
推荐指数
1
解决办法
9170
查看次数

是否存在针对OnItemSelected事件的MvvmCross MvxSpinner的绑定?

我有一个MvxSpinner定义如下,我试图在用户通过ItemSelected绑定选择微调器中的项时触发命令:

    <Mvx.MvxSpinner
        style="@style/Spinners"
        android:id="@+id/jobStatusSpinner"
        android:prompt="@string/jobstatus_prompt"
        local:MvxBind="ItemsSource JobStatuses; SelectedItem SelectedJobStatus; ItemSelected FilterJobsByStatusCommand"
        local:MvxDropDownItemTemplate="@layout/spinner_jobstatuses"
        local:MvxItemTemplate="@layout/item_jobstatus" />
Run Code Online (Sandbox Code Playgroud)

我已经确认FilterJobsByStatusCommand可以通过添加按钮从视图中调用:

<Button
    android:text="Test"
    android:background="@drawable/StandardButton"
    style="@style/Buttons.FullWidth"
    android:layout_centerHorizontal="true"
    local:MvxBind="Click FilterJobsByStatusCommand" />
Run Code Online (Sandbox Code Playgroud)

这成功触发了FilterJobsByStatusCommand也成功使用SelectedJobStatusViewModel 的属性来更新作业列表.应该 ItemSelected绑定工作还是我错过了一些其他代码或不同的绑定?

android spinner mvvmcross xamarin

1
推荐指数
1
解决办法
5645
查看次数

从特定主题中选择一个微调器

我怎样才能获得Holo Spinner轻松活动,或相反?

因为如果我把HoloTheme用于活动,每一个都View将是Holo ......

android spinner android-theme

1
推荐指数
1
解决办法
8230
查看次数

将微调器数组中的选定值传递给另一个Android类

我正在建立一个具有自毁图像的应用程序,我试图将从微调框中选择的值传递给另一个类

final String titles[] = {"1 Second","2 Seconds", "3 Seconds","4 Seconds","5 Seconds","6 Seconds","7 Seconds", "8 seconds, "9 seconds", 10 seconds};
    mSeconds = (Spinner) view.findViewById(R.id.secondsSpinner);
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, titles);
    arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

mSeconds.setAdapter(arrayAdapter);
mSeconds.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        int secondsToUse = position + 1;
    }

    @Override
    public void onNothingSelected(AdapterView<?> parentView) {
        // do nothing
    }

});
Run Code Online (Sandbox Code Playgroud)

我的意图方法:

Intent recipientsIntent = new Intent(getActivity(), RecipientsActivity.class);
 recipientsIntent.putExtra("key1", titles);
                      startActivity(recipientsIntent);
Run Code Online (Sandbox Code Playgroud)

如何将选中的值传递给另一个类?我的方法传递整个数组而不是选中的项目.

java arrays android spinner android-intent

1
推荐指数
1
解决办法
1498
查看次数

如何更改Spinner下拉项目的文本颜色?

我想将Spinner下拉项目的文本颜色更改为黑色.

我有一个自定义Spinner,列出了不同的语言.它有一个ImageView和一个TextView.微调器显示在带有白色文本的蓝色背景上,看起来很好.

问题是当它被点击时,下拉显示但文本几乎看不到,因为下拉的浅灰色和文本的白色.

这是Spinner的代码activity_main.xml:

<Spinner
    android:id="@+id/languageSpinner"
    style="@android:style/Widget.Material.Light.DropDownItem.Spinner"
    android:layout_width="140dp"
    android:layout_height="40dp"
    android:prompt="@string/selectLanguageSpinner"
    android:spinnerMode="dropdown" />
Run Code Online (Sandbox Code Playgroud)

这是spinner_row_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical" />

        <TextView
            android:id="@+id/language"
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:layout_gravity="center_vertical"
            android:layout_marginEnd="10dp"
            android:layout_marginStart="5dp"
            android:gravity="center_vertical"
            android:lineSpacingExtra="20dp"
            android:minHeight="40dp"
            android:textColor="@color/white"
            android:textSize="20sp" />
    </LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

这里文本颜色设置为白色,因为当没有选择任何内容时我需要它是白色的.

这是以下代码styles.xml:

<!-- Base application theme. -->
    <style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/myAppPrimaryColor</item>
        <item name="colorPrimaryDark">@color/myAppPrimaryDarkColor</item>
        <item name="colorAccent">@color/myAppAccentColor</item>
        <item …
Run Code Online (Sandbox Code Playgroud)

android spinner android-spinner

1
推荐指数
1
解决办法
5585
查看次数

Kotlin Android微调文字颜色

我创建了一个微调器,但是我想更改文本颜色和字体大小。Web上有很多Java教程。我是新手,因此很难将Java转换为Kotlin。请帮助找到解决方案。

在此处输入图片说明

SpinnerActivity.kt

class SpinnerActivity : AppCompatActivity() {

    lateinit var option : Spinner
    lateinit var result :TextView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_spinner)

        option = findViewById(R.id.sp_option) as Spinner
        result = findViewById(R.id.tv_result) as TextView

        val options = arrayOf("111", "222", "333")

        option.adapter = ArrayAdapter<String>(this,R.layout.spinner_layout,options)


        option.onItemSelectedListener = object : AdapterView.OnItemSelectedListener{
            override fun onNothingSelected(parent: AdapterView<*>?) {
                //TODO("not implemented") //To change body of created functions use File | Settings | File Templates.

                result.text = "please select an option"
            }

            override fun onItemSelected(parent: AdapterView<*>?, view: View?, …
Run Code Online (Sandbox Code Playgroud)

android text spinner kotlin

1
推荐指数
1
解决办法
895
查看次数