2013-08-24 2 views
9

Ich bin neu zu android und ich bekomme null Zeigerausnahme, wenn onclicklistener eines Knopfes innerhalb des Dialogs aufrufend. was soll ich machen.Wie man onclicklistener Knopf setzt, der in einem kundenspezifischen Dialog ist

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(""); 

        } 
       }); 
      } 
     }); 

Ich werde Ihre Hilfe wirklich zu schätzen wissen. dies ist, wie mein Dialog xml wie folgt aussieht: -

<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

den Stack-Trace Post Ich denke Nullpointer für Taste Initialisierung zu bestätigen. – Raghunandan

Antwort

10

Sie müssen das Dialog-Objekt verwenden, um Ansichten

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

auch zu initialisieren, wenn Sie EditText die in Ihrem benutzerdefinierten Dialog haben machen Sie sie in der initialisieren gleicher Weg.

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

Thx Es begann jetzt zu arbeiten ... –

+0

@AbhishekPatidar wenn es hilft, bitte markieren Sie die Antwort als richtig. – Raghunandan

+0

Nur noch ein Gefallen, wie soll ich aus dem Dialog ausgehen? Klicken Sie auf eine Schaltfläche sagen Abbrechen im Dialogfeld –

1

Sie können Dialog schließen, indem dialog.dismiss Aufruf()

 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

danke, bro, diese Arbeit – vuhung3990

Verwandte Themen