2016-07-16 14 views
0

Ich habe eine Anwendung mit einem Listenansicht und eine Schaltfläche auf dem Bildschirm, die ein Dialogfeld öffnet. Das Dialogfeld enthält ein Feld EditText, in dem der Benutzer Text eingeben und auf Hinzufügen klicken kann. onClickListener für die Schaltfläche Hinzufügen führt einen asynchronen Aufruf durch und übergibt Text an api. Problem ist EditText Wert wird nicht gespeichert. Ich kann es nicht einmal im Log zeigen. Ich bin sicher, ich vermisse etwas Einfaches. Deine Hilfe ist missachtet. Hier ist der Code.EditText-Wert im Dialog wird nicht gespeichert

SignInActivity.java

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_sign_in); 

    Log.v("SignInActivity","Activity has began"); 

    final DancerAdapter adapter = new DancerAdapter(this,oneDancerArrayList,1); 

    Log.v("SignInActivity","DancerAdapter"); 

    listView = (ListView) findViewById(R.id.listView); 
    listView.setAdapter(adapter); 

    getGirlList(); 

    nameInput = (EditText) findViewById(R.id.cr_room_name); 
    loginDancer = (Button) findViewById(R.id.addDancer); 
    loginDancer.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      DialogFragment newFragment = new AddDancerDialog(); 
      newFragment.show(getFragmentManager(), "newDancer"); 
     } 
    }); 

    static public class AddDancerDialog extends DialogFragment { 
     @Override 
     public Dialog onCreateDialog(Bundle savedInstanceState) { 
      AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
      builder.setView(R.layout.signin_dialog); 

      LayoutInflater inflater = LayoutInflater.from(getContext()); 
      final View dialogview = inflater.inflate(R.layout.signin_dialog, null); 

      //final EditText dancerName = (EditText)dialogview.findViewById(R.id.etDancerName); 

      builder.setMessage("Login New Dancer") 
        .setPositiveButton("Add", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          final ProgressBar newProgress = (ProgressBar)dialogview.findViewById(R.id.progressBar); 
          final EditText dancerName = (EditText)dialogview.findViewById(R.id.etDancerName); 

          String nameSubmit = dancerName.getText().toString(); 
          Log.v("SignInActivity-Dialog",nameSubmit); 
          newProgress.setVisibility(View.VISIBLE); 

          AsyncHttpClient client = new AsyncHttpClient(); 
          RequestParams params = new RequestParams(); 
          params.put("action", "addDancer"); 
          params.put("name",nameSubmit); 

          Log.v("SignInActivity-Dialog", "Add Dancer Function"); 
          Log.v("SignInActivity-Dialog",dancerName.getText().toString()); 

          client.post("http://peekatu.com/apiweb/girlList.php", params, 
            new AsyncHttpResponseHandler() { 
             @Override 
             public void onSuccess(String response) { 
              Log.v("response", response); 
              responseString2 = response; 
              //parseDancerList(response); 
              Log.v("SignInActivity",response); 
             } 

             @Override 
             public void onFailure(Throwable error, String content) { 
              Log.v("response", "response failed network error"); 
              //waitncall(true); 
             }  
            }); 
         } 
        }) 
        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
         } 
        }); 
      return builder.create(); 
     } 
    } 
} 

Antwort

1

Problem ist hier:

Hier stellen Sie einen Blick auf Dialog

builder.setView(R.layout.signin_dialog); 

Dann Sie eine EditText in dieser Ansicht suchen:

LayoutInflater inflater = LayoutInflater.from(getContext()); 
final View dialogview = inflater.inflate(R.layout.signin_dialog, null); 
final EditText dancerName = (EditText)dialogview.findViewById(R.id.etDancerName); 

Das dialogView wurde aufgeblasen, aber es ist nicht die Ansicht, die zu Dialog hinzugefügt wurde. Sie sind anders ..

Ich glaube, Sie beheben können wie folgt:

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 

    LayoutInflater inflater = LayoutInflater.from(getContext()); 
    final View dialogview = inflater.inflate(R.layout.signin_dialog, null); 

    builder.setView(dialogview); 

    ... 
} 
+0

Das tat es! Vielen Dank! – TWeeKeD