2016-06-20 7 views
0

Ich versuche derzeit, eine Zeichenfolge aus einem EditText-Feld zu erhalten.getText() in EditText funktioniert nicht

Hier ist mein Code:

import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.Dialog; 
import android.app.DialogFragment; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.net.Uri; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.widget.EditText; 

public class FirstRunDialog extends DialogFragment { 

    public static final String DEBUG_TAG = FirstRunDialog.class.getSimpleName(); 
    private static final String PREFS_NAME = "MyPrefsFile"; 
    private LayoutInflater inflater; 
    private View dialogView; 
    private EditText input; 
    private DialogInterface.OnClickListener listener; 
    private SharedPreferences settings; 
    private SharedPreferences.Editor editor; 

    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     if (activity instanceof DialogInterface.OnClickListener) { 
      listener = (DialogInterface.OnClickListener) activity; 
     } 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 

     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     builder.setTitle(R.string.app_name); 
     builder.setView(R.layout.first_run_dialog); 
     builder.setCancelable(false); 
     builder.setPositiveButton("Key-Testen", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       settings = getActivity().getSharedPreferences(PREFS_NAME, 0); 
       dialogView = getActivity().getLayoutInflater().inflate(R.layout.first_run_dialog, null); 
       input = (EditText) dialogView.findViewById(R.id.editText); 
       editor = settings.edit(); 
       editor.putString("apiKey", input.getText().toString()); 
       editor.commit(); 
       Log.d(DEBUG_TAG, "apiKey Input: " + input.getText().toString()); 
       Log.d(DEBUG_TAG, "apiKey: " + settings.getString("apiKey", "")); 
       dialog.dismiss(); 
      } 
     }); 
     builder.setNegativeButton("Key-Erstellen", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       //Open Browser, then go to: https://account.arena.net/applications 
       Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://account.arena.net/applications")); 
       startActivity(browserIntent); 
      } 
     }); 
     return builder.create(); 
    } 

} 

Dieser Code funktioniert nicht! Laut den Antworten, wie man Text von einem EditText abruft, habe ich nichts falsch gemacht. Der EditText befindet sich in einem AlertFragment.

Der Stromausgang für die Log.d (...) ist (und das gleiche gilt für die zweite):

apikey Input:

Thx im Voraus.

+0

versuchen zu helfen getText setzen(). ToString() in der Log-Methode auch – kimchibooty

+0

Sie versuchen, den Text zu erhalten, wenn der Dialog erstellt wird, wahrscheinlich leer –

+0

ist Der Code ist im onClick Listener von die AlertView –

Antwort

1

Eine neue Ansicht nicht aufblasen, wenn die Taste gedrückt wird.
Versuchen getDialog() mit:

builder.setPositiveButton("Key-Testen", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
      settings = getActivity().getSharedPreferences(PREFS_NAME, 0); 
      input = (EditText) getDialog().findViewById(R.id.editText); 
      editor = settings.edit(); 
      editor.putString("apiKey", input.getText().toString()); 
      editor.commit(); 
      Log.d(DEBUG_TAG, "apiKey Input: " + input.getText().toString()); 
      Log.d(DEBUG_TAG, "apiKey: " + settings.getString("apiKey", "")); 
      dialog.dismiss(); 
     } 
    }); 
+0

Thx, löste es! - wenn ich kann es markieren –

+0

Wenn es funktioniert, bitte markieren Sie die Antwort als akzeptiert, danke! –

0

versuchen, diese

nehmen Sie diese Zeile aus dem Onclick

input = (EditText) dialogView.findViewById(R.id.editText); 

und die Ansicht aufblasen

LayoutInflater inflater = this.getLayoutInflater(); 
View dialogView = inflater.inflate(R.layout.alert_label_editor, null); 
builder .setView(dialogView); 

EditText input = (EditText) dialogView.findViewById(R.id.editText); 

dann input.gettext() .tostring im onclick, sorry für mein Englisch und ich hoffe,

Verwandte Themen