2013-08-24 40 views
9

Tôi mới dùng Android và tôi nhận ngoại lệ con trỏ null khi gọi onclicklistener của một nút bên trong hộp thoại. tôi nên làm gì.Cách đặt nút onclicklistener nằm trong hộp thoại tùy chỉnh

btn_add.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Dialog d=new Dialog(MainActivity.this); 
       d.setContentView(R.layout.activity_main); 
       d.setTitle("Add content"); 
       d.show(); 
       btnsubmit = (Button) findViewById(R.id.btn_submit); 
       btnsubmit.setOnClickListener(new OnClickListener() { 

        @Override 
        public void onClick(View v) { 

         String name = etName.getText().toString(); 
         String phoneNo = etPhone.getText().toString(); 

         String query = "INSERT INTO PHONE_CONTACTS(name,phone) values ('" 
           + name + "','" + phoneNo + "')"; 
         sqlHandler.executeQuery(query); 
         showList(); 
         etName.setText(""); 
         etPhone.setText(""); 

        } 
       }); 
      } 
     }); 

Tôi thực sự sẽ đánh giá cao sự trợ giúp của bạn. đây là cách xml thoại của tôi trông giống như: -

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity"> 
    <TableLayout 

      android:layout_width="match_parent" 

      android:layout_height="wrap_content" > 



     <TableRow 

       android:id="@+id/tableRow1" 

       android:layout_width="wrap_content" 

       android:layout_height="wrap_content" > 



      <TextView 

        android:id="@+id/textView1" 

        android:layout_width="wrap_content" 

        android:layout_height="wrap_content" 

        android:text="@string/name" /> 



      <EditText 

        android:id="@+id/et_name" 

        android:layout_width="wrap_content" 

        android:layout_height="wrap_content" 

        android:ems="10" > 

      </EditText> 

     </TableRow> 



     <TableRow 

       android:id="@+id/tableRow2" 

       android:layout_width="wrap_content" 

       android:layout_height="wrap_content" > 



      <TextView 

        android:id="@+id/textView1" 

        android:layout_width="wrap_content" 

        android:layout_height="wrap_content" 

        android:text="@string/phone" /> 



      <EditText 

        android:id="@+id/et_phone" 

        android:layout_width="wrap_content" 

        android:layout_height="wrap_content" 

        android:ems="10" > 

      </EditText> 

     </TableRow> 

     <Button 
       android:id="@+id/btn_submit" 
       android:layout_width="80dp" 
       android:layout_height="40dp" 
       android:text="@string/submit" 
       android:layout_centerVertical="true" 
       android:layout_centerHorizontal="true"/> 
    </TableLayout> 

</RelativeLayout> 
+0

gửi stack trace để xác nhận tôi đoán NullPointerException cho nút khởi tạo. – Raghunandan

Trả lời

10

Bạn cần phải sử dụng các đối tượng thoại để khởi tạo lần xem

btnsubmit = (Button) d.findViewById(R.id.btn_submit); 

Ngoài ra nếu bạn có của EditText trong hộp thoại tùy chỉnh của bạn làm cho bạn khởi tạo chúng trong cùng một cách.

EditText etName = (EdiText) d.findViewById(R.id.et_Name); 
    EditText etPhone = (EdiText) d.findViewById(R.id.et_Phoe); 
+0

Thx Nó bắt đầu hoạt động ngay bây giờ ... –

+0

@AbhishekPatidar nếu nó giúp đánh dấu câu trả lời là chính xác. – Raghunandan

+0

Chỉ còn một ưu tiên nữa là tôi giả sử ra khỏi hộp thoại như thế nào. bằng cách bấm vào một nút nói hủy bỏ trong hộp thoại –

1

Bạn có thể loại bỏ hộp thoại bằng cách gọi dialog.dismiss()

 final Dialog d=new Dialog(MainActivity.this); 
      d.show(); 
      btnsubmit = (Button) d.findViewById(R.id.btn_submit); 
      btnsubmit.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 

        d.dismiss(); 
       } 
      }); 
+0

cảm ơn bạn bro, công việc này – vuhung3990

Các vấn đề liên quan