android - 如何在自定义对话框中添加微调器并用数组填充它

标签 android spinner

我有一个主屏幕,在单击菜单时有一个名为菜单的按钮我正在打开一个自定义对话框,其中有一个微调器 我想用数组来填充它 一切正常,但当我将适配器设置为微调器时,它显示错误

这就是我在 android 中所做的,

package com.example.drydays;
import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Spinner;

public class MainActivity extends Activity {
     final Context context = this;
     private Button button;

     private String[] states  = new String[]{
                "Gujrat","Jammu and Kashmir","Kerala","Karnataka","Lakshadweep","Maharashtra","Manipur","Mizoram",
                "Nagaland","New Delhi","Rajasthan","Tami Nadu","West Bengal"
        };
     ArrayList<String> categoryList = new ArrayList<String>();

     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //make it fullscreen
                requestWindowFeature(Window.FEATURE_NO_TITLE);      
                getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        //fix portrait orientation
                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

        setContentView(R.layout.activity_main);
        ImageView img = (ImageView)findViewById(R.id.imageView1);
        img.setOnClickListener(new OnClickListener() {

              @Override
              public void onClick(View arg0) {

                // custom dialog
                final Dialog dialog = new Dialog(context);
                dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
                dialog.setContentView(R.layout.menu);
                Button dialogButton = (Button) dialog.findViewById(R.id.btncross);
                // if button is clicked, close the custom dialog
                dialogButton.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        dialog.dismiss();
                    }
                });

                dialog.show();
              }
            });

         Spinner spin = (Spinner)findViewById(R.id.spinState);
         ArrayAdapter<String> adapter_state = new ArrayAdapter<String>(MainActivity.this,  android.R.layout.simple_spinner_item, states);
         adapter_state.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
         **spin.setAdapter(adapter_state);**
         // adding this line gives me error
    }

}

最佳答案

根据您的解释,您似乎在 menu.xml 中有一个微调器。

所以你需要在onClick里面移动

Spinner spin = (Spinner)dialog.findViewById(R.id.spinState);
ArrayAdapter<String> adapter_state = new ArrayAdapter<String>(MainActivity.this,  android.R.layout.simple_spinner_item, states);     
adapter_state.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin.setAdapter(adapter_state);

也改变这个

final Dialog dialog = new Dialog(context);
// context is initialize before onCreate. its null

final Dialog dialog = new Dialog(MainActivity.this);

关于android - 如何在自定义对话框中添加微调器并用数组填充它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23029242/

相关文章:

android - 使用ConstraintLayout时如何让两个按钮居中?

android - 如何修复 java.lang.NoClassDefFoundError : org. jsoup.Jsoup 错误?

android - 在 sqlite 中存储微调器的选定值

javascript - 如何将 FuelUX Spinner 连接到输入元件?

android - 需要一个这样的旋转器

java - Java 中的简短形式 toast

java - Android Studio myfirstapp 中的错误 : Gradle errors

android - 如何防止 onItemSelected 在新实例化的 Spinner 上触发?

java - 微调器不显示条目

android - 如何在不更改关联的选择列表项的情况下设置当前微调器文本