2013-03-17 85 views
0

我的快速对话框生成器中的微调器出现问题,编译时并没有显示任何错误,我还打电话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(); 
     } 
    }); 
+0

你有从logcat的堆栈跟踪? – Trinimon 2013-03-17 13:14:10

回答

0

如果微调是内部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... 
+0

以及我试过你的代码,但编译器提示我将'dialogview'的修饰符改为'final'。我做到了,但仍然无法正常工作。 – 2013-03-17 13:34:39

+0

@RadityaKurnianto:你也需要改变其他视图,你想从对话框EditText,TextView的... – 2013-03-17 13:37:54

+0

@RadityaKurnianto:哪个错误你得到PLZ编辑你的问题与最新的代码和logcat结果因为它是可能的你有当前代码中的其他问题。 – 2013-03-17 13:39:00

0
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(); 
}