在android对话框生成器中创建微调适配器
我的快速对话框生成器中的微调器出现问题,编译时并没有显示任何错误,我还打电话alertdialog.show()
显示我的自定义对话框,但无法填充我的微调器项目。这里是我的代码在android对话框生成器中创建微调适配器
public Dialog add_pop_up()
{
AlertDialog.Builder builder = new AlertDialog.Builder(UgJadwal.this);
LayoutInflater inflater = UgJadwal.this.getLayoutInflater();
builder.setView(inflater.inflate(R.layout.addpopup, null));
builder.setIcon(R.drawable.add);
builder.setTitle("Add new schedule");
builder.setPositiveButton(R.string.add, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int id)
{
day = (Spinner)findViewById(R.id.day);
subject = (EditText)findViewById(R.id.subject);
time = (EditText)findViewById(R.id.time);
location = (Spinner)findViewById(R.id.location);
lecture = (EditText)findViewById(R.id.lecture);
ArrayAdapter<CharSequence> adapterDay = ArrayAdapter.createFromResource(UgJadwal.this, R.array.day, android.R.layout.simple_spinner_item);
adapterDay.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
day.setAdapter(adapterDay);
Toast.makeText(getApplicationContext(), "Added Successfully!", Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int id)
{
//
}
});
return builder.create();
}
的logcat:
03-17 20:14:59.030: E/AndroidRuntime(9889): FATAL EXCEPTION: main
03-17 20:14:59.030: E/AndroidRuntime(9889): java.lang.NullPointerException
03-17 20:14:59.030: E/AndroidRuntime(9889): at com.rk.ug_simplify.UgJadwal$3.onClick(UgJadwal.java:195)
03-17 20:14:59.030: E/AndroidRuntime(9889): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158)
03-17 20:14:59.030: E/AndroidRuntime(9889): at android.os.Handler.dispatchMessage(Handler.java:99)
03-17 20:14:59.030: E/AndroidRuntime(9889): at android.os.Looper.loop(Looper.java:123)
03-17 20:14:59.030: E/AndroidRuntime(9889): at android.app.ActivityThread.main(ActivityThread.java:4627)
03-17 20:14:59.030: E/AndroidRuntime(9889): at java.lang.reflect.Method.invokeNative(Native Method)
03-17 20:14:59.030: E/AndroidRuntime(9889): at java.lang.reflect.Method.invoke(Method.java:521)
03-17 20:14:59.030: E/AndroidRuntime(9889): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-17 20:14:59.030: E/AndroidRuntime(9889): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-17 20:14:59.030: E/AndroidRuntime(9889): at dalvik.system.NativeStart.main(Native Method)
更新!上面是我的logcat,但是那个错误指向另一个自定义对话框的上下文。 有没有人知道我的错误?感谢您的帮助,谢谢!
更新2!添加视图
public Dialog add_pop_up()
{
AlertDialog.Builder builder = new AlertDialog.Builder(UgJadwal.this);
LayoutInflater inflater = UgJadwal.this.getLayoutInflater();
final View dialogview = inflater.inflate(R.layout.addpopup, null);
builder.setView(dialogview);
builder.setIcon(R.drawable.add);
builder.setTitle("Add new schedule");
builder.setPositiveButton(R.string.add, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int id)
{
day = (Spinner)dialogview.findViewById(R.id.day);
subject = (EditText)dialogview.findViewById(R.id.subject);
time = (EditText)dialogview.findViewById(R.id.time);
location = (Spinner)dialogview.findViewById(R.id.location);
lecture = (EditText)dialogview.findViewById(R.id.lecture);
ArrayAdapter<CharSequence> adapterDay = ArrayAdapter.createFromResource(UgJadwal.this, R.array.day, android.R.layout.simple_spinner_item);
adapterDay.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
day.setAdapter(adapterDay);
String sub = subject.getText().toString();
Toast.makeText(UgJadwal.this, "Success " + sub, Toast.LENGTH_SHORT).show();
}
});
如果微调是内部Dialog
布局,那么你将需要使用对话框布局实例来访问它。改变你的代码:
AlertDialog.Builder builder = new AlertDialog.Builder(UgJadwal.this);
LayoutInflater inflater = UgJadwal.this.getLayoutInflater();
// inflate layout to View
View dialogview = inflater.inflate(R.layout.dialog_layout, null);
builder.setView(dialogview); //<< set view for Dialog
//....your code here....
builder.setPositiveButton(R.string.add, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int id)
{
day = (Spinner)dialogview.findViewById(R.id.day); //<< access Spinner
// do same for other Views to access it from dialogview
// your code here...
以及我试过你的代码,但编译器提示我将'dialogview'的修饰符改为'final'。我做到了,但仍然无法正常工作。 – 2013-03-17 13:34:39
@RadityaKurnianto:你也需要改变其他视图,你想从对话框EditText,TextView的... – 2013-03-17 13:37:54
@RadityaKurnianto:哪个错误你得到PLZ编辑你的问题与最新的代码和logcat结果因为它是可能的你有当前代码中的其他问题。 – 2013-03-17 13:39:00
public void Getradius() {
// Set up download interaction. Display a dialog
// when the user clicks download button and require
// a user-provided region name
android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(class.this);
final Spinner min_zoom=new Spinner(class.this);
final Spinner max_zoom=new Spinner(class.this);
ArrayAdapter min = new ArrayAdapter(this, R.layout.spinner_item_register, minzoom_values);
min.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
min_zoom.setAdapter(min);
// Build the dialog box
builder.setTitle("Set Radius")
.setView(min_zoom)
.setPositiveButton("GET COURSE LIST", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
// Display the dialog
builder.show();
}
你有从logcat的堆栈跟踪? – Trinimon 2013-03-17 13:14:10