Android 在AlertDialog中显示微调器

Android 在AlertDialog中显示微调器,android,xml,user-interface,spinner,Android,Xml,User Interface,Spinner,我想在alertDialog中显示微调器。我有下面的代码,但它只是给我一个黑屏。Logcat没有说任何错误 MyActivity.java AlertDialog.Builder builder; AlertDialog alertDialog; Context mContext = getApplicationContext(); LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLA

我想在alertDialog中显示微调器。我有下面的代码,但它只是给我一个黑屏。Logcat没有说任何错误

MyActivity.java

AlertDialog.Builder builder;
AlertDialog alertDialog;

Context mContext = getApplicationContext();
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.spinner,null);

String array_spinner[];
array_spinner=new String[5];

array_spinner[0]="US";
array_spinner[1]="Japan";
array_spinner[2]="China";
array_spinner[3]="India";
array_spinner[4]="Vietnam";

Spinner s = (Spinner) layout.findViewById(R.id.Spinner01);

ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item, array_spinner);

s.setAdapter(adapter);

builder = new AlertDialog.Builder(mContext);
builder.setView(layout);
alertDialog = builder.create();
Main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <Spinner
        android:id="@+id/Spinner01"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

为了查看对话框。

您需要使用
alertDialog.show()
来显示对话框。此外,您可能会因为在那里使用的
mContext
而出错

通常,这对对话框没有帮助。相反,请尝试使用
ActivityName。此
作为
mContext

Unable to start activity ComponentInfo{com.example.SpinnerExample/com.example.SpinnerExample.SpinnerExampleActivity}
这意味着在menifest包中的名称:com.example.SpinnerExample

活动名称:com.example.SpinnerExample.SpinnerExampleActivity


因此,删除限定名称并设置ActivityName
。SpinnerExample

如果您提供
新对话框(上下文),通常会发生这种情况错误的上下文。在生成对话框时使用此选项:

final Dialog dialog = new Dialog(YourClass.this);
dialog.setContentView(R.layout.your_xml_layout);
dialog.setTitle("Dialog Title");
dialog.show();

请记住使用类名和XML布局路径相应地更改
YourClass

首先,您的mContext必须在活动中相等,mContext=this在onCreate中,并且必须在onCreate中声明微调器,如果此解决方案能够解决您的问题,谢谢您的回答,但它会强制关闭,我更新了日志猫的帖子。感谢@Hiral提供的额外信息和您的回复,它将强制关闭,我更新了日志猫的帖子。您的日志猫不可读。请复制错误行并简单地将其粘贴到您的问题中。当您刚刚添加alert.show()而未将McContext更改为ActivityName时,您得到了什么?Yo@Hiral!非常感谢,将其更改为Context mContext=SpinnerExampleActivity.this;为我工作!:)
Unable to start activity ComponentInfo{com.example.SpinnerExample/com.example.SpinnerExample.SpinnerExampleActivity}
final Dialog dialog = new Dialog(YourClass.this);
dialog.setContentView(R.layout.your_xml_layout);
dialog.setTitle("Dialog Title");
dialog.show();