2016-06-20 20 views
0

現在、EditTextフィールドから文字列を取得しようとしています。このコードは動作していないEditTextのgetText()が機能しません

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

} 

は、ここに私のコードです!答えによると、EditTextからテキストを取り出す方法は何も間違っていませんでした。 EditTextはAlertFragmentにあります。

Log.d(...)の現在の出力がある(と同じ第二のために行く):

APIKEY入力:事前に

Thxを。

+0

試みを支援したいと考えています。のtoString()Logメソッドにも – kimchibooty

+0

あなたは、ダイアログが作成されたときにテキストを取得しようとしている、おそらく –

+0

コードがののonClickリスナにある空でありますAlertView –

答えて

1

ボタンを押したときに新しいビューを展開しないでください。 )(onclickの

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

からこの行を取り出し

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、解決済み! - 私はそれをマークすることができます –

+0

それが動作する場合は、受け入れ、感謝の答えをマークしてください! –

0

この

を試してみて、ビューinput.gettextその後、

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

を膨らま:
getDialog()を使用してみてくださいonclickの.tostring、私の英語のために申し訳ありません と私はのgetText()を入れて

関連する問題