2016-04-25 8 views
0

Ich habe ein Problem. Ich habe eine Methode erstellt, die Dialog mit meinem eigenen Layout erstellt. Und ich habe keine Ahnung, wie ich Werte (Strings) von meinem EdiText und einer beliebigen Variable in meiner Aktivität weitergeben kann. In Kommentaren können Sie sehen, wie ich versuchte, dies zu lösen.Übergeben Sie Daten von Dialog zu Aktivität Android

Java-Methode

public void makeDialog(){ 
     // custom dialog 
     final Dialog dialog = new Dialog(context); 
     dialog.setContentView(R.layout.dialog_ip); 
     dialog.setTitle("IP connection"); 

// Todo passing value from dialog to activity 
//  final EditText ipValueConnection = (EditText)findViewById(R.id.ipValueConnection); 
//  ipValueConnection.setOnClickListener(this); 
//  EditText portValueConnection = (EditText)findViewById(R.id.portValueConnection); 
//  Toast.makeText(context, ipValueConnection.getText().toString(), Toast.LENGTH_LONG).show(); 

     Button dialogButtonLogin = (Button) dialog.findViewById(R.id.dialogButtonLogin); 
     // if button is clicked, close the custom dialog 
     dialogButtonLogin.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 


       tryToConnect(); 
       dialog.dismiss(); 

      } 
     }); 




     // set the custom dialog components - text, image and button 
//  TextView text = (TextView) dialog.findViewById(R.id.IP); 

     dialog.show(); 

    } 

XML Layout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
    <ImageView 
     android:src="@drawable/antena" 
     android:layout_width="220dp" 
     android:layout_height="120dp" 
     android:scaleType="centerInside" 
     android:background="#FFFFBB33" 
     android:contentDescription="@string/app_name" 
     android:adjustViewBounds="true" 

     /> 
    <EditText 
     android:id="@+id/ipValueConnection" 
     android:inputType="textEmailAddress" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="16dp" 
     android:layout_marginLeft="4dp" 
     android:layout_marginRight="4dp" 
     android:layout_marginBottom="4dp" 
     android:hint="IP" /> 
    <EditText 
     android:id="@+id/portValueConnection" 
     android:inputType="textPassword" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="4dp" 
     android:layout_marginLeft="4dp" 
     android:layout_marginRight="4dp" 
     android:layout_marginBottom="16dp" 
     android:fontFamily="sans-serif" 
     android:hint="PORT"/> 
    <Button 
     android:id="@+id/dialogButtonLogin" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Login" 
     android:layout_marginTop="5dp" 
     /> 
</LinearLayout> 
+0

Sie eine HashMap von Schlüssel machen kann - Wertepaar und es zurückschicken. –

+0

aber wie man es zurückschickt? –

+2

Sie können eine 'Schnittstelle' und' onClick() 'der Schaltfläche machen, Sie können die Daten übergeben. –

Antwort

0

Wenn ich Ihre Frage richtig verstanden habe, Ihren Text bearbeiten in dialog_ip ist, so dass Sie

final EditText ipValueConnection = (EditText) dialog.findViewById(R.id.ipValueConnection); 

Dann verwenden müssen Sie können Text von bearbeiten Text als

erhalten
String text= ipValueConnection.getText().toString; 

Und verwenden Sie diese Variable in Ihrer Aktivität.

+0

java.lang.NullPointerException: Versuch, virtuelle Methode 'android.text.Editable android.widget.EditText.getText()' auf eine Null-Objekt Referenz Ich habe diese Art von Fehler, wenn ich das tun –

+0

Der Fehler sagt, dass die bearbeiten Sie Text, den Sie wollen, ist nicht in der Ansicht .. Sie können Ihre kommentierte Abschnitt wie in der Antwort oben bearbeiten und dann versuchen, es auszuführen .. – Bee

+0

Ich habe versucht, Code und ich bekomme den Fehler, den Sie angegeben, wenn ich 'final EditText ipValueConnection = (EditText) findViewById (R.id.ipValueConnection); 'das ist in Ihrem Code .. Versuchen Sie, es als' final EditText ipValueConnection = (EditText) dialog.findViewById (R.id.ipValueConnection); ' – Bee

0

eine Schnittstelle erstellen

public interface OnClickInterface { 

    public void onClick(); 
} 

nennen es sie in Ihrer Tätigkeit instanziiert onCreate()

OnClickInterface onClickInterface = new OnClickInterface() { 
      @Override 
      public void onClick() { 
       //Call Method from here 
       requiredMethod(); 
      } 
     }; 

// Und in Ihrem Dialog classs oder Methode

public void makeDialog(OnClickInterface onClickInterface){ 
//Your code 

dialogButtonLogin.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

      onClickInterface.onClick(); 


       dialog.dismiss(); 

      } 
     }); 
} 
1

Der Fehler erhalten bedeutet, dass ein Verweis auf den editText nicht in der aktuellen Layoutdatei gefunden werden kann. Sie haben EditText in der benutzerdefinierten Dialogansicht statt in der Aktivitätsansicht gefunden.

Also statt:

final EditText ipValueConnection =(EditText)findViewById(R.id.ipValueConnection); 

Verwendung:

final EditText ipValueConnection =(EditText)dialog.findViewById(R.id.ipValueConnection); 
Verwandte Themen